Win32:获取其他应用程序关闭/退出的消息通知

Win*_*tha 1 windows winapi visual-c++

我的应用程序需要监视系统上所有其他正在运行的应用程序 有没有办法在退出每个应用程序exe时得到通知?

我能找到的方法:

1)使用PSAPI函数以频繁的间隔获取正在运行的exes列表.在每次轮询中与上一个列表进行比较,以找出退出的应用程序/进程.缺点:需要不断轮询,需要占用CPU时间.

2)为WM_CLOSE消息设置一个全局钩子:使用这个我可以通过标题栏上的关闭按钮关闭任何应用程序时收到通知

缺点:( - )并非所有应用程序都生成WM_CLOSE消息(例如:总视频播放器执行)( - )如果应用程序通过"退出"菜单或按钮(例如文件 - >退出)关闭,我不能陷阱那条消息

我错过了还有其他更好的方法吗?请指教.

Ser*_*ier 8

  1. 使用PSAPI获取PID列表.
  2. 然后使用OpenProcess()获取每个进程的句柄.
  3. 当其中一个进程退出时,使用WaitForMultipleObjects()发出信号.