プロが教える店舗&オフィスのセキュリティ対策術

OS:win2000pro
VB:VB6.0sp5

プロジェクトA
formA にて 別プロジェクトBを実行

 private sub command_click()
  projectB.exe
  MsgBox "projectB 実行完了"
 end sub

1.projectBの処理がすべて完了したら
 メッセージ「projectB 実行完了」
 を出力したいのでが、どのようにすれば良いのか
 分かりません
  ご教示くださいます様よろしくお願いいたします

2.projectBの処理中にエラー発生時も
 projectA にて感知したいのですが、
 どのようにすればいいのでしょうか?

 初歩的なご質問で申し訳ございません
よろしくお願いいたします

A 回答 (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
試しに貼り付けてやってみてください。
    • good
    • 0

A.exeに見えないボタンを用意して、B.exeの処理終了後にA.exeの見えないボタンを押させるというのはどうでしょう?



http://okweb.jp/kotaeru.php3?q=199357

もしくは、B.ExeをAcitveXEXEとして作成してしまえば、A.exeの内部DLLのようにB.exeを扱えるので、そっちの方がお勧めできるかもしれません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!