c++ - 当窗口关闭时得到通知(或者它拥有的线程消失)

标签 c++ winapi

我有一个 hwnd,它不属于我的进程,我想在它消失时收到通知,以便我的代码可以执行清理操作。执行此操作的最佳方法是什么?

最佳答案

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

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

关于c++ - 当窗口关闭时得到通知(或者它拥有的线程消失),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23838385/

相关文章:

winapi - 改变屏幕刷新率的Windows API是什么?

c++ - 从 dll 返回 std::string/std::list

c++ - 类对象的变量级内存错误检测

c++ - Win32 - 获取应用程序的主窗口句柄

c++ - 什么时候需要转换运算符c++?

windows - 将 Win32 API 功能与 pthreads 一起使用/从 pthreads 使用

c++ - 有没有更好的方法来使用比特流来解码文件格式?

c++ - 首先评估哪个默认参数,为什么?

python - 从脚本驱动 Windows GUI 程序

c - WinSock 的 send() 总是返回 0 字节发送