原代码如下:
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
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 LongPublic Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As LongConst PROCESS_QUERY_INFORMATION = &H400
Const STILL_ALIVE = &H103
Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Public Const INFINITE = &HFFFF      '  Infinite timeout
Dim Str As String, L As Long, hProcess As Long, ExitEvent As Long, ExitCode As Long
    L = ShellExecute(0, "open", "shb.xls", 0, App.Path & "\", 1)
    'L = Shell(App.Path & "\" & "shb.xls", vbNormalFocus)    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, L)
    ExitEvent = WaitForSingleObject(hProcess, INFINITE)
    Do
        Call GetExitCodeProcess(hProcess, ExitCode)        
        DoEvents
    Loop While ExitCode = STILL_ALIVE    Call CloseHandle(hProcess)
    ....
    
    为什么在Do... Loop 的中不做循环  ???