2007年5月29日
我们用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执行外部程序的等待问题?
添加回复