在C#上,檢測特定進程ID是否退出非常容易。如何通過Win32 API實現.NET Process.Exited事件
Process p = Process.GetProcessById(pid);
p.Exited += new EventHandler(OnExited);
我該怎麼辦才能通過Win32 API編寫與此相同的操作?
在C#上,檢測特定進程ID是否退出非常容易。如何通過Win32 API實現.NET Process.Exited事件
Process p = Process.GetProcessById(pid);
p.Exited += new EventHandler(OnExited);
我該怎麼辦才能通過Win32 API編寫與此相同的操作?
你這樣做與.NET Process類完全一樣。在進程句柄上使用RegisterWaitForSingleObject()。您的回調將在握手得到信號(即完成過程)或可選超時過期時運行。請記住,像.NET一樣,回調函數在一個線程池線程上運行,因此需要進行正確的同步。
作爲Hans的回答的替代方法,您還可以使用WaitForSingleObject
同步等待進程句柄。
謝謝。我試過這段代碼: HANDLE wo = NULL; \t HANDLE h = OpenProcess(PROCESS_ALL_ACCESS,TRUE,pid); \t BOOL解析度= RegisterWaitForSingleObject(WO, \t \t小時,WaitCallback, \t \t 0,無限,WT_EXECUTEONLYONCE); \t CloseHandle(h); – Tank2005