我有一个讨厌的程序,在关闭时不能保存他的位置。 我做了一个小的控制台程序打开它并将窗口移动到另一个位置,现在我想在程序关闭时保存位置,我如何拦截关闭消息以便我可以在窗口销毁之前保存位置本身?
答案 0 :(得分:0)
由于您可以在启动其应用后定位窗口,因此您显然拥有窗口HWND
。但是,您不能跨进程边界子类化HWND
,因此您的应用程序无法直接挂钩窗口。你必须要么:
将一些代码远程注入到已启动的进程中,以便从其自己的进程的上下文中对目标窗口进行子类化,然后您的子类可以直接访问该窗口接收的所有消息。
使用SetWindowsHookEx()
在DLL中实现全局消息挂钩,并查看目标HWND
收到的所有消息。
无论哪种方式,当您的子类/钩子检测到传递到目标窗口的WM_CLLOSE
和/或WM_DESTROY
消息时,它都可以使用任何进程间通信将该信息传回您的应用程序( IPC)您选择的机制 - 命名管道,命名事件,套接字,邮件槽,窗口消息等。