【发布时间】:2010-09-04 03:02:45
【问题描述】:
我将从我的教练应用程序中打开游戏进程并将一些值写入内存。打开进程并将值写入内存我没有问题。但我无法实现如何监控游戏进程的可用性。例如我打开了一个正在运行的进程,用户关闭它并再次打开。如何在我的代码中跟踪它? OpenProcess 句柄即使在进程关闭后仍然有效(直到调用 CloseHandle)。谢谢。
【问题讨论】:
我将从我的教练应用程序中打开游戏进程并将一些值写入内存。打开进程并将值写入内存我没有问题。但我无法实现如何监控游戏进程的可用性。例如我打开了一个正在运行的进程,用户关闭它并再次打开。如何在我的代码中跟踪它? OpenProcess 句柄即使在进程关闭后仍然有效(直到调用 CloseHandle)。谢谢。
【问题讨论】:
您可以使用GetExitCodeProcess 函数查看您拥有的句柄是否指向正在运行的进程。
DWORD exitCode=0;
::GetExitCodeProcess(hProcess, &exitCode);
if (exitCode==STILL_ACTIVE)
; //process is alive
【讨论】:
或者,如果更适合您的应用程序向您发出进程终止事件信号(进程是可等待对象):
::WaitForSingleObject(hProcess, dwTimeout);
【讨论】: