截获使用ShellExecuteEx打开的窗口的关闭消息
Intercept the closing message of a window opened with ShellExecuteEx
我有一个烦人的程序,关闭时不保存他的位置。我已经制作了一个小控制台程序,可以打开它并将窗口移动到另一个位置,现在我想在程序关闭时保存位置,我如何拦截关闭消息,以便在窗口自行破坏之前保存位置?
由于您可以在启动应用程序后定位窗口,因此您显然拥有窗口的HWND
。但是,您不能跨越进程边界对HWND
进行子类化,因此您的应用程序不能直接挂接窗口。你必须:
-
将一些代码远程注入到启动的进程中,从其自身进程的上下文中对目标窗口进行子类化,然后您的子类可以直接访问窗口接收到的所有消息。
-
使用CCD_ 3在DLL中实现全局消息挂钩,并查看目标CCD_。
无论哪种方式,当您的子类/钩子检测到WM_CLLOSE
和/或WM_DESTROY
消息被传递到目标窗口时,它可以使用您选择的任何进程间通信(IPC)机制(命名管道、命名事件、套接字、mailslot、窗口消息等)将该信息通信回您的应用程序。
相关文章:
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 由于无效的 ValidateRgn() 子窗口不会收到WM_PAINT消息
- MFC 中的窗口消息管理:添加基类调用是否是强制性的?
- 输出窗口中消息的可视化工作室源
- 为什么初始化 Wintab 扩展后没有收到WT_PACKETEXT窗口消息?
- 与WM_DPICHANGED消息一起发送的建议窗口大小太大
- 如何处理窗口的消息?
- 在弹出窗口中管理CEF客户端区域的窗口消息
- 在Internet Explorer_Server(IE9)中处理窗口消息
- 使用智能指针在窗口消息中将对象作为 WPARAM 传递
- 将窗口消息发送到控制台应用程序
- 是否可以捕获翻译/调度消息循环中的窗口消息/事件
- 调整窗口大小时不断发送窗口消息WM_SIZING
- 正在发送转发窗口消息
- 对于单个实例应用程序,只允许使用单个窗口消息框
- Win32:更多"object oriented"窗口消息处理系统
- 异步代理和窗口消息
- Windows (c++)上窗口消息的问题(延迟)
- WinAPI窗口消息似乎被插件窃取-如何修复
- 在 COleControl 中未处理的 LButtonUp 窗口消息