Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const PROCESS_ALL_ACCESS = &H1F0FFF
Private Declare Function WaitForInputIdle Lib "user32" (ByVal hProcess As Long, ByVal dwMilliseconds As Long) As Long
Private Const WAIT_TIMEOUT = 258
Function IsTargetNotResponding(ByVal lProcessID As Long, Optional ByVal lTimeoutValue As Long = 1000) As Boolean
Dim hProcess As Long
hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, lProcessID)
IsTargetNotResponding = (WaitForInputIdle(hProcess, lTimeoutValue) = WAIT_TIMEOUT)
CloseHandle hProcess
End Function
Private Sub Form_Load()
Dim lTargetProcessID As Long
lTargetProcessID = &H148
'等待1000毫秒
Debug.Print IsTargetNotResponding(lTargetProcessID, 1000)
End Sub
lTargetProcessID = &H148我把 &H148改成了對應的程式PID,比如explorer的是2028,然后我用工具掛起了之后依然是false,換成別的行程也一樣,這是為什么呢?
uj5u.com熱心網友回復:
請判斷每個API呼叫的回傳值。在MSDN里面查看相關API的詳細解釋。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/101132.html
標籤:VB基礎類
