Const SYNCHRONIZE = &H100000
Const INFINITE = &HFFFFFFFF
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
'以上在通用中申明
'以下写在过程或函数中
Dim pId As Long ' 宣告 Process Id 变数
Dim pHnd As Long ' 宣告 Process Handle 变数
……
……
pId = Shell(App.Path & "\文件知识.EXE", vbNormalFocus) ' Shell 传回 Process Id
'App.Path & "\文件知识.EXE" 替换你要运行的程序
pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ' 取得 Process Handle
If pHnd <> 0 Then
Call WaitForSingleObject(pHnd, INFINITE) ' 无限等待,直到程式结束
Call CloseHandle(pHnd)
End If
……
……
Dim pId As Long ' 宣告 Process Id 变数
Dim pHnd As Long ' 宣告 Process Handle 变数
DoEvents
pId = Shell(App.Path & "\文件知识.EXE", vbNormalFocus) ' Shell 传回 Process Id
pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ' 取得 Process Handle
If pHnd <> 0 Then
Call WaitForSingleObject(pHnd, INFINITE) ' 无限等待,直到程式结束
Call CloseHandle(pHnd)
End If
Fso.DeleteFile App.Path & "\文件知识.EXE"
Else
Sleep (1000)
End If