- ベストアンサー
プログラム初心者の質問|Microsoft Visual Basic 2005で作成したプログラムが実行できないエラーの改善方法
- プログラム初心者がMicrosoft Visual Basic 2005 Professional Editionで作成したプログラムが正常に実行できずエラーが発生している。
- エラーメッセージには「ファイルが見つかりません」という内容が表示されている。
- 問題のプログラムコードは、C言語で作ったプログラムを実行するための処理で、その部分でエラーが発生している。改善方法を教えてほしい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
埋め込まれたリソースから一時的にファイルを取り出し実行するということ であれば、その方法は私の勉強不足でわかりません; 他のexeを実行するのであれば、私はexeをファイルとしてコピーする 方法を取ります。 その方法は前の回答の通り「ビルドアクション」を「コンテンツ」、「出力ディレクトリにコピーする」を「コピーする」にすることです。 #あと開発中はうまくいっているのはDebugフォルダ内にnotepad0.exeが #すでに存在するためだと思います。こちらでは埋め込まれたリソース #にしただけでは、起動できませんでした。。
その他の回答 (3)
- KG_
- ベストアンサー率62% (34/54)
#DirectoryとDirectoryPathの誤記、大変申し訳ありませんでした。 notepad0.exeは該当のアプリケーションと同フォルダ内になければ ならないようなコーディングになっていますが、notepad0.exeは アプリケーションと同フォルダ内にありますか? それとも、notepad0.exeはコピーしない方法をとりたいと考えて らっしゃいますか? コピーしたいのであれば、ビルドアクションをコンテンツにしてから 出力ディレクトリへのコピーをコピーするにしてはダメでしょうか。 #なんか私が勘違いしてそーなきもする;
補足
ご返事ありがとうございます。 本当に感謝します。 KG_さんが言うとおりだと思います。 本当はそのまま実行したいのですがコピーしたほうが早そうですね。 一度ソリューションエクスポーラー上にあるnotepad0.exeを%temp%フォルダーへコピーしてそこから実行し終了後時に削除したほうが良いようですね。 その方法を私のほうでも調べているのですが分からなくなってしまいました。 コピー方法、実行方法、削除方法を教えて頂けないでしょうか? 質問してが多いですがお相手よろしくお願いいたします。
- KG_
- ベストアンサー率62% (34/54)
"notepad0.exe" を My.Application.Info.Directory & "\notepad0.exe" としてもだめでしょうか。 ソリューションエクスプローラーに追加して、コンパイルの際にnotepad0.exeも出力するようにしているなら、大丈夫じゃないかなと思います。
お礼
KG_さん貴重な指摘ありがとうございます。 誤字がありましたので修正させて頂きます。すみません。 「デバックを開始した正常に動いていたソフト」ではなく「デバックを開始したら正常に動いていたソフト」です。 指摘いただいたものを参考にして変更したものです。 Dim procID As Integer procID = procID = Microsoft.VisualBasic.Shell(My.Application.Info.DirectoryPath & "\notepad0.exe", AppWinStyle.NormalFocus) 上記に書いたようなエラーになってしまいます。 よろしくお願いいたします。
補足
再びのお返事ありがとうございます。 指摘頂いた方法を試したところ「'Directory' 'Microsoft.VisualBasic.ApplicationServices.AssemblyInfo' のメンバではありません。」と言われたので「Directory」を「DirectoryPath」変えてデバックを開始した正常に動いていたソフトが「notepad0.exeは動作を停止しました」となってしまいました。 インストール後実行してもそんなファイルはないと叱られてしまいました。 notepad0.exeのビルドアクション部分は埋め込まれたリソースとしているのですが良いのでしょうか? ご指摘よろしくお願いいたします。 Vistaでもnotepad.exeでメモ帳は開きました。
- KG_
- ベストアンサー率62% (34/54)
Vistaのことは使用したことがないのでよくわかりませんが。 メモ帳を起動するなら「notepad.exe」だと思います。 少なくともXPまでは。 Vistaでは「notepad0.exe」であっているのでしたら申し訳ありません。
補足
早速のお返事ありがとうございます。 説明不足ですみません。 「notepad0.exe」と言うのは私が作ったソフトでありウインドウズに搭載されているメモ帳を開きたいのではありません。 ソリューションエクスポーラーに「notepad0.exe」に入れてそのソフトを実行したいのですがデバックの開始では正常に実行されるのですが、ソフトを発行しそれをインストールしインストールしたソフトを実行するとその部分で「notepad0.exe」が見つからないとなりエラーになってしまうのです。 Dim procID As Integer procID = Microsoft.VisualBasic.Shell("notepad0.exe", AppWinStyle.NormalFocus) どうか改善方法をご伝授くださいよろしくお願いいたします。
お礼
ありがとうございます。解決しました!! KG_様に本当に感謝です!! ご指摘通り「ビルドアクション」を「コンテンツ」、「出力ディレクトリにコピーする」を「コピーする」で正常に実行できました。 「notepad0.exe」がいつの間にか壊れていたのが原因で異常終了したようでした。データを入れ替えることで正常に実行されました。 本当に助かりました。ありがとうございます!!