VB6.0においてshell関数を使用して、
プログラムを起動しているのですが、
起動側のプログラムは起動したプログラムが、
終了するまで終了をしない様に、
したいのですが、shell関数では、
その様な状態を取得するのは、
可能でしょうか?
アドバイスをよろしくお願いします。
Shell関数ですと、APIで判定しなければいけませんので、かわりに
WshShellオブジェクトのRunメソッドを利用されては如何でしょう。
MsgBox strCommandLine & "を起動します。"
ret = CreateObject("WScript.Shell").Run(strCommandLine, vbNormalFocus, True)
MsgBox "終了しました。リターンコードは" & CStr(ret) & "です。"
さすがです魔界の仮面弁士さん。
余談ですがいつも勉強させていただいてます。
ありがとうございます。
ちなみにShellを使うとこんなにややこしい事になります。
'プロセスのハンドルを取得
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Private Const PROCESS_QUERY_INFORMATION = &H400&
'プロセスの終了を取得
Private Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, lpExitCode As Long) As Long
Private Const STILL_ACTIVE = &H103&
'ハンドルの開放
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Private Sub Command1_Click()
Dim mhWnd As Long
Dim proID As Long
Dim mEnd As Long
mhWnd = Shell(Text1.Text, vbNormalFocu)
proID = OpenProcess(PROCESS_QUERY_INFORMATION, 1, mhWnd)
Do
GetExitCodeProcess proID, mEnd
DoEvents
Loop While mEnd = STILL_ACTIVE
CloseHandle proID
Unload Me
End Sub
魔界の仮面弁士さん、Take1さん有難うございました。
2つとも確認してみましたがどちらも上手く動作しました。
いろんな方法があるんですね。
今後ともよろしくお願いします。
ツイート | ![]() |