c++ - 使用 Win32 监视打开的程序

标签 c++ windows winapi monitoring

我搜索过网络和各种论坛,但我找不到一件事,即如何持续监控打开的程序,然后在被监控的程序出现问题时关闭另一个程序(不是被监控的程序)。

例如,假设有一个已经打开的记事本窗口,然后用户或其他一些程序打开了一个 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/

相关文章:

c++ - 从服务添加 URL 到 IE 缓存

c++ - 从客户端应用程序调试动态库

c - 如何在 WinLDAP 中使用 ldap_sasl_bind?

c++ - 如何创建查找表

C++ 如何设置菜单项的颜色?

windows - wxPython:使框架位于一切之上

python子进程作为Windows中的不同用户

winapi - 在 Windows 中等待孙子进程

c++ - 将 float 转换为格式化字符串

c++ - 自定义大括号初始值设定项