• ベストアンサー

プロジェクトA にて プロジェクトB からの応答を感知したい

OS:win2000pro VB:VB6.0sp5 プロジェクトA formA にて 別プロジェクトBを実行  private sub command_click()   projectB.exe   MsgBox "projectB 実行完了"  end sub 1.projectBの処理がすべて完了したら  メッセージ「projectB 実行完了」  を出力したいのでが、どのようにすれば良いのか  分かりません   ご教示くださいます様よろしくお願いいたします 2.projectBの処理中にエラー発生時も  projectA にて感知したいのですが、  どのようにすればいいのでしょうか?  初歩的なご質問で申し訳ございません よろしくお願いいたします

質問者が選んだベストアンサー

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

他のexeを起動させるにはShell関数を使う方法とAPIを使う方法があるのですが・・ Shell内で起動しShellの終了を取得してメッセージを表示ではどうでしょうか? projectB.exeオブジェクトのハンドルを取得させて終了を待ち終了したらメッセージを表示する。 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 Private Const PROCESS_QUERY_INFORMATION = &H400& Private Const STILL_ACTIVE = &H103& Private Sub ShellEnd(ProcessID As Long) Dim hProcess As Long Dim EndCode As Long Dim EndRet As Long hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 1, ProcessID) Do EndRet = GetExitCodeProcess(hProcess, EndCode) DoEvents Loop While (EndCode = STILL_ACTIVE) EndRet = CloseHandle(hProcess) End Sub private sub command_click() On Error GoTo command_Click  Dim Ret As Long     Ret = Shell("C:\フルパス\projectB.exe", AppWinStyle.Hide)   ShellEnd (Ret)   MsgBox ("projectB 実行完了")   command_Click: MsgBox Err.Description Exit Sub End Sub 試しに貼り付けてやってみてください。

その他の回答 (1)

回答No.1

A.exeに見えないボタンを用意して、B.exeの処理終了後にA.exeの見えないボタンを押させるというのはどうでしょう? http://okweb.jp/kotaeru.php3?q=199357 もしくは、B.ExeをAcitveXEXEとして作成してしまえば、A.exeの内部DLLのようにB.exeを扱えるので、そっちの方がお勧めできるかもしれません。

関連するQ&A