我搜索过网络和各种论坛,但我找不到一件事,即如何持续监控打开的程序,然后在被监控的程序出现问题时关闭另一个程序(不是被监控的程序)。
例如,假设有一个已经打开的记事本窗口,然后用户或其他一些程序打开了一个 Windows 资源管理器窗口。我想知道如何在不与 Windows 资源管理器窗口交互的情况下关闭记事本窗口(除了意识到它确实是打开的),以及如何在用户关闭 Windows 资源管理器窗口时关闭记事本窗口。
提前致谢! :D
最佳答案
在 Windows 上,您可以使用 PSAPI(进程状态 API)来了解进程何时启动和终止。 EnumProcesses 函数可以为您提供此信息。
确定进程终止的更可靠方法(因为进程 ID 可以重复使用)是等待其进程句柄(您将需要 SYNCHRONIZE
访问权限),您可以使用 OpenProcess 获取该句柄以及从 EnumProcesses 获得的进程 ID。
要终止进程,总是有 TerminateProcess 。要调用 TerminateProcess,您需要一个具有 PROCESS_TERMINATE
访问权限的进程句柄。所有这些都假定您拥有对要终止的进程执行这些操作所需的权限。
关于c++ - 使用 Win32 监视打开的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7531113/