我有一个 hwnd,它不属于我的进程,我想在它消失时收到通知,以便我的代码可以执行清理操作。执行此操作的最佳方法是什么?
最佳答案
要检测 HWND 所属进程何时消失,您可以从 GetWindowThreadProcessId()
获取 HWND 的进程 ID,然后使用 OpenProcess 获取进程的
,然后使用HANDLE
()WaitForSingleObject()
或者其他相关的等待函数。进程退出时会发出进程句柄信号。
要检测 HWND 何时消失,从 GetWindowThreadProcessId()
获取 HWND 的线程 ID,然后使用 SetWindowsHookEx()
Hook 该线程的消息队列,以便您可以拦截属于该线程的所有 HWND 的 WM_DESTROY
和 WM_NCDESTROY
消息,寻找您感兴趣的特定 HWND。请注意,您的钩子(Hook)必须在 DLL 中实现 Hook 另一个进程,因此您必须使用您选择的进程间通信机制来在 HWND 被销毁时通知您的主应用程序。
关于c++ - 当窗口关闭时得到通知(或者它拥有的线程消失),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23838385/