
No.3ベストアンサー
- 回答日時:
Shell関数より Processクラスで実行したほうが簡単に待てますよ
Dim oPro as Process
oPro = Process.Start("..\..\a.bat")
oPro.WaitForExit()
MessageBox.Show("Hello")
といった具合です
ご回答ありがとうございます。
上記のように実装したところ、簡単にできました!
Processクラスですか、知りませんでした。
Processクラスについてもう少し調べてみますね。
ありがとうございました!
No.5
- 回答日時:
参考URLの上の方にあると思いますが、Windows Scripting Host の略です。
http://msdn.microsoft.com/ja-jp/library/cc364455 …
Scriptの中で、色々な機能を実施する場合、お世話になるモノです。
試しに以下のコードを実行してみてください。
MsgBox "バッチを始めます。"
CreateObject("WScript.Shell").Run "C:\~\hoge.bat", 1, True
MsgBox "バッチが終わりました。"
バッチファイルのパスは実際の環境に合わせて記述してください。
No.4
- 回答日時:
すでに答え自体は出ていますが、ちょっと調べてみた感じだと、ほぼ
ANo.3のredfox63氏が書かれたProcessクラスを使った方法の一択っぽいですね。
ANo.1の方法については、リンク先に書かれてるのはVB6の記述方法で、
.NETで使うには多少コンバートしないといけません。
おまけに、Option Strict On の設定だと、WScript.Shellのメソッドを書こうとしても
遅延バインディングだと怒られてしまいます。
ANo.2で書かれているソースもVB6用で、Declareで書かれているAPIの定義について、
VB6とVB.NETでは変数のサイズも変更されていたりするので、引数の長さが違うので
変だよ、と怒られている感じです。
As Long を As Integer に変更すれば怒られなくなるかもしれませんが…
ともあれ、簡単に出来る手段が標準で与えられているので、それを使わない手はありませんね。
ちなみに、拡張子に関連付けての実行も、Processクラスを使用すれば出来ます。
これもAPI使うまでもありません。
ご回答ありがとうございます。
やはりそうなのですか。
私もがんばって他のやり方も試してみたものの
いろいろ怒られてしまって。
Processクラスでうまくいきました。
ありがとうございました。
No.2
- 回答日時:
下記のコードを実行してみてください。
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Const PROCESS_QUERY_INFORMATION = &H400
Const STILL_ALIVE = &H103
Private Sub Command1_Click()
Dim pid As Long
pid = Shell("c:\a.bat", vbNormalFocus)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)
Do
Call GetExitCodeProcess(hProcess, ExitCode)
DoEvents
Loop While ExitCode = STILL_ALIVE
Call CloseHandle(hProcess)
MsgBox ("ok")
End Sub
ご回答ありがとうございます。
上記の通りにやってみましたところ、
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)
の行にて以下のエラーとなりました。
PInvoke 関数 'WindowsApplication1!WindowsApplication1.Form1::OpenProcess' がスタックを不安定にしています。PInvoke シグネチャがアンマネージ ターゲット シグネチャに一致していないことが原因として考えられます。呼び出し規約、および PInvoke シグネチャのパラメータがターゲットのアンマネージ シグネチャに一致していることを確認してください。
なんのことでしょうか。現在調査中です。
No.1
- 回答日時:
Shell関数ではなく、WSHのRun、Execメソッドを使ってみては?
http://msdn.microsoft.com/ja-jp/library/cc364421 …
http://msdn.microsoft.com/ja-jp/library/cc364356 …
ご回答ありがとうございます。
WSHとはいったいなんなのでしょうか?
このサイトに行き同様のコードを記述してみても
wscriptでコンパイルエラーとなってしまいます。
wscriptが何をImportsすればいいものなのか、調べても
わからない状況です。
もう少し調べてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 バッチファイルでのエクスプローラー終了 1 2022/05/30 14:32
- ネットワーク 通信量を見たい 3 2023/03/01 07:47
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- 一眼レフカメラ 「Imaging Edge」を手動起動せず、ARWファイルを最高画質JPEGへ変換する方法は? 2 2022/08/05 11:38
- その他(プログラミング・Web制作) バッチファイル 1 2022/09/16 14:51
- その他(クラウドサービス・オンラインストレージ) OneDrive同期が完了しない。(windows10) 4 2023/04/06 02:27
- Excel(エクセル) Excel2010 VBAが特定動作で実行出来なくなる 7 2022/12/29 14:26
- デスクトップパソコン windows7を使っているパソコンでの質問です。先日動作が遅く再起動かけると「windowsを起動 9 2022/06/16 21:31
- Windows 8 QTTabBarが無反応になる 2 2023/04/07 14:17
- Windows 10 Windows10で、フォルダにあるすべてのファイルを、下層フォルダも含め一つの階層へ配置し直したい 3 2022/05/31 09:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
これってパソコンの最適化が完...
-
[teraterm] waitコマンドで停止...
-
複数のbatファイルを自動実行し...
-
VBScriptでコマンドプロンプト...
-
バッチファイルの内容を表示さ...
-
VBSでバッチを実行できません。
-
exeファイルを実行するとコマン...
-
Access の VBA 実行中に他の操...
-
Windows System32 Security Hea...
-
Excel VBA ステップインが途中...
-
VScodeのエラー解決法 Pythonの...
-
Excel(エクセル) VBA プロシー...
-
シェルで5分前の時間を取得したい
-
コマンドプロンプトのコンパイ...
-
VB.NETでのDOSコマンドを実行に...
-
VBAから複数のバッチファイルを...
-
タイマーがうまく動かない
-
COBOLのイニシャライズとバリュ...
-
powershellのforeachの動作
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
[teraterm] waitコマンドで停止...
-
バッチファイルの内容を表示さ...
-
exeファイルを実行するとコマン...
-
VBscriptが起動しない?
-
これってパソコンの最適化が完...
-
「読み取りと実行」と「読み取...
-
複数のbatファイルを自動実行し...
-
Windows System32 Security Hea...
-
ネットワーク名が見つかりません
-
エクセル フォルダの画像を画...
-
Excel(エクセル) VBA プロシー...
-
PDFファイルを開き、印刷し、閉...
-
Access の VBA 実行中に他の操...
-
バッチファイルが不正終了して...
-
VScodeのエラー解決法 Pythonの...
-
VBScriptでコマンドプロンプト...
-
pythonスクリプトを管理者権限...
-
VB.NETでのDOSコマンドを実行に...
-
batからexeを実行し戻り値を受...
おすすめ情報