Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Private Const SYNCHRONIZE = &H100000 Private Const INFINITE = &HFFFFFFFFpublic function Callbexe(byval EXEName as string) Dim pId As Long, pHnd As Long pId = Shell(EXEName) pHnd = OpenProcess(SYNCHRONIZE, 0, pId) If pHnd <> 0 Then Call WaitForSingleObject(pHnd, INFINITE) Call CloseHandle(pHnd) End If end function
运行其他程序,并等待执行完毕 在程序中,我们可能要打开一个程序,如:Notepad,并要求在该程序结束后,才继续其他的操作。以下的代码完成这样的要求。 声明:Public Const SYNCHRONIZE = &H100000 Public Const INFINITE = &HFFFFFFFF Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As LongPrivate Sub Command1_Click() ’例子:(以 Notepad 为例) Dim pId As Long, pHnd As Long pId = Shell("Notepad", vbNormalFocus) pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ' 取得 Process Handle If pHnd <> 0 Then Call WaitForSingleObject(pHnd, INFINITE) ' 等待程序结束 Call CloseHandle(pHnd) End If MsgBox "Over!", vbInformation, "Over" End Sub
Private Const SYNCHRONIZE = &H100000
Private Const INFINITE = &HFFFFFFFFpublic function Callbexe(byval EXEName as string)
Dim pId As Long, pHnd As Long
pId = Shell(EXEName)
pHnd = OpenProcess(SYNCHRONIZE, 0, pId)
If pHnd <> 0 Then
Call WaitForSingleObject(pHnd, INFINITE)
Call CloseHandle(pHnd)
End If
end function
在程序中,我们可能要打开一个程序,如:Notepad,并要求在该程序结束后,才继续其他的操作。以下的代码完成这样的要求。
声明:Public Const SYNCHRONIZE = &H100000
Public Const INFINITE = &HFFFFFFFF
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As LongPrivate Sub Command1_Click()
’例子:(以 Notepad 为例)
Dim pId As Long, pHnd As Long
pId = Shell("Notepad", vbNormalFocus)
pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ' 取得 Process Handle
If pHnd <> 0 Then
Call WaitForSingleObject(pHnd, INFINITE) ' 等待程序结束
Call CloseHandle(pHnd)
End If
MsgBox "Over!", vbInformation, "Over"
End Sub
怀疑跟你人品有关啦