在C#上,很容易检测是否退出了特定的进程ID。
Process p = Process.GetProcessById(pid);
p.Exited += new EventHandler(OnExited);
我应该怎么做才能通过Win32 API编写与此相同的操作?
答案 0 :(得分:2)
您执行此操作的方式与.NET Process类完全相同。在流程句柄上使用RegisterWaitForSingleObject()。当句柄被发出信号(即过程完成)或可选的超时到期时,您的回调将运行。请记住,与.NET一样,回调在一个theadpool线程上运行,因此需要正确的同步。
答案 1 :(得分:1)
作为Hans回答的替代方法,您还可以使用WaitForSingleObject
同步等待流程句柄。