投稿日 | : 2007/07/20(Fri) 20:24 |
投稿者 | : はる |
Eメール | : |
URL | : |
タイトル | : プロセスIDはとれているのに、OpenProcessで0になる |
FindWindowで、アプリケーションのキャプションでハンドルをとって
If hHung = 0 Then
hHung = FindWindow(vbNullString, "サーバー設定")
End If
アプリケーションの応答なし状態(IsHungAppWindow)
を3秒おきにチェックして、10回連続応答なし状態(IsHungAppWindow)
=30秒間応答なし
であるとき、TerminateProcessで強制終了させています
通常はうまくいっているのですが、ときたまうまくいかないケースが発生します
プロセスIDはとれているのに、OpenProcess で、0になります
どなたか同じような経験がある方おいでにならないでしょうか?
Call GetWindowThreadProcessId(hHung, lngProcessID)
'lngProcessIDは値が取れている
hProcess = OpenProcess(SYNCHRONIZE Or PROCESS_TERMINATE, 0, lngProcessID)
If hProcess = 0 Then ’<−−ここが0になる
DoEvents
tmrClientCheck.Enabled = True
Exit Sub
End If
Call TerminateProcess(hProcess, 0)
Call CloseHandle(hProcess)