How to determine when a dos-shelled process has ended in NT 3.51?


    Use this code:

    Private Type STARTUPINFO
       cb As Long
       lpReserved As String
       lpDesktop As String
       lpTitle As String
       dwX As Long
       dwY As Long
       dwXSize As Long
       dwYSize As Long
       dwXCountChars As Long
       dwYCountChars As Long
       dwFillAttribute As Long
       dwFlags As Long
       wShowWindow As Integer
       cbReserved2 As Integer
       lpReserved2 As Long
       hStdInput As Long
       hStdOutput As Long
       hStdError As Long
    End Type
    
    Private Type PROCESS_INFORMATION
       hProcess As Long
       hThread As Long
       dwProcessID As Long
       dwThreadID As Long
    End Type
    
    Private Const NORMAL_PRIORITY_CLASS = &H20&
    Private Const INFINITE = -1&
    
    Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As
    Long, ByVal dwMilliseconds As Long) As Long
    Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As
    Long
    Declare Function CreateProcessA Lib "kernel32" (ByVal _
       lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _
       lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
       ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
       ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _
       lpStartupInfo As STARTUPINFO, lpProcessInformation As _
       PROCESS_INFORMATION) As Long
    
    =====================
    
    Sub ExecCmd(cmdline$)
    
       On Error GoTo ExecCmd_Err
    
       Dim proc As PROCESS_INFORMATION
       Dim start As STARTUPINFO
       Dim Ret As Long
    
       ' Initialize the STARTUPINFO structure:
       start.cb = Len(start)
    
       ' Start the shelled application:
       Ret = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, _
          NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)
    
       ' Wait for the shelled application to finish:
       Ret = WaitForSingleObject(proc.hProcess, INFINITE)
       Ret = CloseHandle(proc.hProcess)
    
       Exit Sub
    
    ExecCmd_Err:
       oError.Log " ExecCmd: " & Error
       Exit Sub
    
    End Sub
    

Mail to Daniel Wiman <daniel@wimania.com>
Online since June 1996, updated 971025
<- The VB home
<- Daniels homepage