我们用shell()来执行外部的程序时,一旦shell启动了外部程序后无论外部程序是否已经运行完毕,Access 都会继续执行 shell 语句下面的 VBA 程序。若要 Access 等待 shell() 调用的外部程序执行完毕后再继续执行下面的 VBA 程序可使用以下方法:

'以下语句加入窗体声明段
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredaccess&, ByVal bInherithandle&, ByVal dwProcessid&) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpexitcode As Long) As Long
Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400
 

Dim hShell As Long
Dim hProc As Long
Dim lExit As Long


'更改您的shell语句为如下格式:
 

    hShell = Shell("RunExeFile", 1)

    hProc = OpenProcess(PROCESS_QUERY_INFORMATION, False, hShell)
   
    If hShell = 0 Then MsgBox "程序执行失败"

    Do
        GetExitCodeProcess hProc, lExit
        DoEvents
    Loop While lExit = STILL_ACTIVE

    MsgBox "Shell 语句执行完毕"

 

 

0 回复,0 引用: [API]如何解决shell执行外部程序的等待问题?

添加回复

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。