0

申し訳ありませんが、これは既に回答されているため、見つけることができません。vb6 アプリから外部プロセスを起動し、そのプロセスが完了するまで待ってから続行する必要があります。十分に単純です。ただし、起動する必要があるプロセスは、子プロセスを起動してから終了します。子プロセス (および他の子プロセス) が完了するのを待つ必要があります

既存のコード:

Private Const WAIT_INFINITE = -1&
Private Const SYNCHRONIZE = &H100000

Private Declare Function OpenProcess Lib "kernel32" _
  (ByVal dwDesiredAccess As Long, _
   ByVal bInheritHandle As Long, _
   ByVal dwProcessId As Long) As Long

Private Declare Function WaitForSingleObject Lib "kernel32" _
   (ByVal hHandle As Long, _
   ByVal dwMilliseconds As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" _
  (ByVal hObject As Long) As Long

Public Sub ShellProcess(strProcess As String, Optional blnWait As Boolean = False)
   Dim hProc As Long
   Dim taskId As Long
   Dim cmdline As String

    cmdline = strProcess
    taskId = Shell(cmdline, vbNormalFocus)

    If blnWait = True Then
         hProc = OpenProcess(SYNCHRONIZE, True, taskId)
        Call WaitForSingleObject(hProc, WAIT_INFINITE)
        CloseHandle hProc
    End If

    MsgBox "The shelled app has ended."
End Sub

しばらく前にこれをc#で行うことができましたが、現在はvb6しか使用できません。

4

0 に答える 0