Dichiarazioni
codice:
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Public Const INFINITE = &HFFFF      '  Timeout infinito
Public Const SYNCHRONIZE = &H100000

Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
utilizzo (DaEseguire è il programma da eseguire con la shell , in questo caso il ping)
codice:
        process_id = Shell(DaEseguire, vbNormalFocus)
        DoEvents
        process_handle = OpenProcess(SYNCHRONIZE, 0, process_id)
        If process_handle <> 0 Then
            WaitForSingleObject process_handle, INFINITE
            CloseHandle process_handle
        End If