窗口关闭时收到通知(或者它的拥有线程消失)

时间:2014-05-23 21:11:42

标签: c++ winapi

我有一个hwnd,我的进程不拥有,我希望在它消失时得到通知,以便我的代码可以执行清理操作。最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

要检测HWND的拥有过程何时消失,您可以从GetWindowThreadProcessId()获取HWND的进程ID,然后使用HANDLE获取OpenProcess()进程,然后使用{{1或其他相关的等待函数。进程退出时会发出进程句柄信号。

要检测HWND何时消失,从WaitForSingleObject()获取HWND的线程ID,然后使用GetWindowThreadProcessId()挂钩该线程的消息队列,以便拦截SetWindowsHookEx()和{{ 1}}属于该线程的所有HWND的消息,寻找您感兴趣的特定HWND。请注意,当挂钩另一个进程时,必须在DLL中实现钩子,因此您必须使用进程间通信机制当HWND被销毁时,您选择通知主应用程序。