Winapi Windows资源管理器未接收WM_DESTROY。如何检测用户何时关闭其资源管理器窗口?

Winapi Windows资源管理器未接收WM_DESTROY。如何检测用户何时关闭其资源管理器窗口?,winapi,hook,windows-explorer,setwindowshookex,Winapi,Hook,Windows Explorer,Setwindowshookex,我正在写一个程序,需要检测窗口何时关闭。目前我正在使用SetWindowsHookEx注册一个可以监视窗口消息的钩子 我正在监视WM_DESTROY事件,以了解窗口何时被破坏。这适用于大多数windows,windows资源管理器是一个显著的例外。Windows资源管理器在终止时似乎没有接收WM_DESTROY事件(但接收大多数其他有趣的事件) Windows资源管理器没有收到WM_DESTROY的原因是什么 更重要的是,除了侦听WM_DESTROY之外,是否还有其他方法可用于检测Windows

我正在写一个程序,需要检测窗口何时关闭。目前我正在使用SetWindowsHookEx注册一个可以监视窗口消息的钩子

我正在监视WM_DESTROY事件,以了解窗口何时被破坏。这适用于大多数windows,windows资源管理器是一个显著的例外。Windows资源管理器在终止时似乎没有接收WM_DESTROY事件(但接收大多数其他有趣的事件)

Windows资源管理器没有收到WM_DESTROY的原因是什么

更重要的是,除了侦听WM_DESTROY之外,是否还有其他方法可用于检测Windows资源管理器何时终止

谢谢


我正在使用Windows 7(不确定此信息的相关性)

使用钩子而不是消息钩子,并让它处理
HCBT\u destrownd
通知。

我刚刚尝试了此方法,但没有成功。与WM_DESTROY一样,我从其他窗口收到HCBT_destrownd通知,但没有从windows资源管理器收到通知。然后该窗口不会被销毁。它可能只是被隐藏起来,以便以后被同一个explorer.exe进程重新使用。打开一个新的Windows资源管理器窗口并不总是启动一个新的Explorer.exe进程。很难为这个问题创建一个建设性的答案。当然,WM_DESTROY通常在窗口被破坏时发送。但破坏窗户不一定是正常的。例如,当Windows在进程终止时销毁窗口时,不会发送任何内容。Explorer没有什么正常的东西,appcompat长达18年的黑客攻击使流行的shell扩展能够正常运行。资源管理器还有一个额外的特殊选项,“在自己的进程中运行窗口”选项。有很多东西会使你的代码无效。那么这是否意味着我不能依赖WM_销毁消息?我真的需要定期轮询窗口并检查哪些窗口不再存在吗?