我正在编写一个程序,需要检测何时关闭窗口。目前我使用SetWindowsHookEx来注册一个可以监视窗口消息的钩子。Windows资源管理器不会收到WM_DESTROY。如何检测用户何时关闭资源管理器窗口?
我正在监视WM_DESTROY事件以查明Windows何时被销毁。这对于Windows资源管理器是一个显着的例外是大多数Windows工作正常。 Windows资源管理器在终止时看起来没有收到WM_DESTROY事件(但收到大多数其他有趣的事件)。
Windows资源管理器没有收到WM_DESTROY的原因是什么?
更重要的是,有没有一种替代方法可以用来检测Windows资源管理器终止而不是侦听WM_DESTROY?
谢谢!
我使用Windows 7(不知道这个信息的相关程度)
很难为这个问题创建一个有建设性的答案。当然,WM_DESTROY *通常会在窗口被销毁时发送。但窗户破坏不一定是正常的。例如,当进程终止时,Windows破坏窗口时,不会发送任何消息。关于资源管理器,没有什么正常的,18年的appcompat黑客保持流行的shell扩展运行看到这一点。还有Explorer提供的额外特殊选项,即“在自己的进程中运行窗口”选项。大量的东西来密谋让你的代码无效。 –
那么这是否意味着我不能依赖一般的WM_DESTROY消息?我真的不得不采取一些措施,例如定期轮询EnumWindows并检查哪些窗口不再存在? – TomPeters