使用 VB 提供的 Shell 方法调用外部程序时,Shell 方法执行后会继续执行下面的代码,而我们不能确定外部程序什么时候调用结束。我们现在可以通过以下方法来实现对被调用程序的监视: 
首先在工程中添加一个模块,然后声明 OpenProcess 及 CloseHandle 这两个 API 函数,然后加入以下代码: 
Public Function StillRun(ByVal ProgramID) As Boolean 
Dim lHProgram As Long 
Dim lReturn As Long 
hProgram = OpenProcess(0, False, ProgramID) 
If Not hProgram = 0 Then 
    StillRun = True 
Else 
    StillRun = False 
End If 
CloseHandle hProgram 
End Function 
说明:ProgramID 是 Shell 函数返回的那个值, 那是一个进程号;lHProgram 是被测程序的进程句柄;lReturn是进程的返回码。本程序只是在WIN32下有效,使用重要注意一个问题, 就是代码的重入问题。可以用类似以下的代码来解决:
While StillRun(id) 
    DoEvents 
Wend