突然ですみません。
一昨日、プログラムをこのMicrosoft Visual Basic 2005 Professional Editionで初めて始めたのですが分からない点があったので質問させていただきます。どうぞよろしくお願いいたします。
使用OSは、ウインドウ ビスタ アルティメットです。
Fromを30ほど作り画像処理ソフトを作っていました。
そしてソリューションエクスポーラーというところにC言語で作ったプログラムを入れそれを開くという動作を行うプログラムを打ちました。
しかしデバックの開始では、正常にそのプログラムが正常に実行されるのですが・・・。発行を行い作ったプログラムをインストールしそのソフトを開こうとするとエラーになってしまうのです。
--
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ProgressBar1.Value = ProgressBar1.Value + 1
Label2.Text = ProgressBar1.Maximum - ProgressBar1.Value
If ProgressBar1.Value = ProgressBar1.Maximum Then
Timer1.Enabled = False
Dim CloseFrom As Form16
CloseFrom = New Form16
Me.Hide()
'ここから
Dim procID As Integer
procID = Microsoft.VisualBasic.Shell("notepad0.exe", AppWinStyle.NormalFocus)
'ここにトラブルが起きています。
Dim settingFrom As Form27
settingFrom = New Form27
settingFrom.ShowDialog()
settingFrom.Dispose()
End If
End Sub
本でプログラムを見て組み合わせただけの変なプログラムですみません。
表示された例外エラーはこれです。
************** 例外テキスト **************
System.IO.FileNotFoundException: ファイルが見つかりません。
場所 Microsoft.VisualBasic.Interaction.Shell(String PathName, AppWinStyle Style, Boolean Wait, Int32 Timeout)
場所 画像処理ソフト.Form16.Timer1_Tick(Object sender, EventArgs e)
場所 System.Windows.Forms.Timer.OnTick(EventArgs e)
場所 System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** 読み込まれたアセンブリ **************
そんなプログラムはな無いと言われてしまいました。
すみませんがどのようにその部分を改善したほうが良いかご伝授くださいよろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
埋め込まれたリソースから一時的にファイルを取り出し実行するということ
であれば、その方法は私の勉強不足でわかりません;
他のexeを実行するのであれば、私はexeをファイルとしてコピーする
方法を取ります。
その方法は前の回答の通り「ビルドアクション」を「コンテンツ」、「出力ディレクトリにコピーする」を「コピーする」にすることです。
#あと開発中はうまくいっているのはDebugフォルダ内にnotepad0.exeが
#すでに存在するためだと思います。こちらでは埋め込まれたリソース
#にしただけでは、起動できませんでした。。
ありがとうございます。解決しました!!
KG_様に本当に感謝です!!
ご指摘通り「ビルドアクション」を「コンテンツ」、「出力ディレクトリにコピーする」を「コピーする」で正常に実行できました。
「notepad0.exe」がいつの間にか壊れていたのが原因で異常終了したようでした。データを入れ替えることで正常に実行されました。
本当に助かりました。ありがとうございます!!
No.3
- 回答日時:
#DirectoryとDirectoryPathの誤記、大変申し訳ありませんでした。
notepad0.exeは該当のアプリケーションと同フォルダ内になければ
ならないようなコーディングになっていますが、notepad0.exeは
アプリケーションと同フォルダ内にありますか?
それとも、notepad0.exeはコピーしない方法をとりたいと考えて
らっしゃいますか?
コピーしたいのであれば、ビルドアクションをコンテンツにしてから
出力ディレクトリへのコピーをコピーするにしてはダメでしょうか。
#なんか私が勘違いしてそーなきもする;
この回答への補足
ご返事ありがとうございます。
本当に感謝します。
KG_さんが言うとおりだと思います。
本当はそのまま実行したいのですがコピーしたほうが早そうですね。
一度ソリューションエクスポーラー上にあるnotepad0.exeを%temp%フォルダーへコピーしてそこから実行し終了後時に削除したほうが良いようですね。
その方法を私のほうでも調べているのですが分からなくなってしまいました。
コピー方法、実行方法、削除方法を教えて頂けないでしょうか?
質問してが多いですがお相手よろしくお願いいたします。
No.2
- 回答日時:
"notepad0.exe"
を
My.Application.Info.Directory & "\notepad0.exe"
としてもだめでしょうか。
ソリューションエクスプローラーに追加して、コンパイルの際にnotepad0.exeも出力するようにしているなら、大丈夫じゃないかなと思います。
この回答への補足
再びのお返事ありがとうございます。
指摘頂いた方法を試したところ「'Directory' 'Microsoft.VisualBasic.ApplicationServices.AssemblyInfo' のメンバではありません。」と言われたので「Directory」を「DirectoryPath」変えてデバックを開始した正常に動いていたソフトが「notepad0.exeは動作を停止しました」となってしまいました。
インストール後実行してもそんなファイルはないと叱られてしまいました。
notepad0.exeのビルドアクション部分は埋め込まれたリソースとしているのですが良いのでしょうか?
ご指摘よろしくお願いいたします。
Vistaでもnotepad.exeでメモ帳は開きました。
KG_さん貴重な指摘ありがとうございます。
誤字がありましたので修正させて頂きます。すみません。
「デバックを開始した正常に動いていたソフト」ではなく「デバックを開始したら正常に動いていたソフト」です。
指摘いただいたものを参考にして変更したものです。
Dim procID As Integer
procID = procID = Microsoft.VisualBasic.Shell(My.Application.Info.DirectoryPath & "\notepad0.exe", AppWinStyle.NormalFocus)
上記に書いたようなエラーになってしまいます。
よろしくお願いいたします。
No.1
- 回答日時:
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)
どうか改善方法をご伝授くださいよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Excel(エクセル) エクセルで書式設定とフィルタの組み合わせでうまく行かないのですが 4 2022/10/07 10:02
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでMP3を鳴らしたい
-
VC++から引数付きexeファイルの...
-
Access クエリ実行が急に非常に...
-
jarファイル実行時の環境変数の...
-
フォルダ内の特定 拡張子のファ...
-
VBスクリプトのWshShell.Runに...
-
コンパイル ./aと./a.out の違い
-
eclipseで作ったプログラムを他...
-
OLE又はDDEを使うVISUAL BESIC...
-
VC++での外部プログラムの実行
-
xismoについてです!開こうとす...
-
JARファイルをEclipseを使って...
-
デスクトップにショートカット...
-
VBSでEXCELのXLSTARTにあるマク...
-
exeファイルをすぐに終了させな...
-
コンポーネント`MSCOMM32.cox'...
-
JAVAと構文解析器(cabocha)の...
-
VBフォームアプリケーションに...
-
exeファイルをホームページ上で...
-
FORTRANのOPEN分について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
OLE又はDDEを使うVISUAL BESIC...
-
xismoについてです!開こうとす...
-
VC++から引数付きexeファイルの...
-
JavaScriptでコマンドプ...
-
LINK : fatal error LNK1104に...
-
VBAでEXEファイルを動かす方法...
-
c/c++ ビルドしたにもかかわら...
-
WScript.Echo と msgbox
-
64bit環境で32bitのodbc参照
-
VBAでMP3を鳴らしたい
-
コマンドプロンプトで外のexeや...
-
batからexeを実行し戻り値を受...
-
ファイルアイコンの左下に緑の□...
-
コンパイル ./aと./a.out の違い
-
htaファイルが実行されません
-
jarファイルとjava.exeの関連付...
-
JAVA .jarファイルに再圧縮する...
-
VB6.0で作ったプロジェクトが起...
-
以下のように複数のファイルを...
おすすめ情報