0

我有一个烦人的程序,在关闭时不会保存他的位置。我做了一个小控制台程序,打开它并将窗口移动到另一个位置,现在我想在程序关闭时保存位置,我如何拦截关闭消息,以便在窗口自行销毁之前保存位置?

4

1 回答 1

0

由于您可以在启动其应用程序后定位窗口,因此您显然拥有窗口的HWND. 但是,您不能HWND跨进程边界对 a 进行子类化,因此您的应用程序无法直接挂钩窗口。您将不得不:

  1. 远程将一些代码注入到启动的进程中,以从其自己的进程的上下文中对目标窗口进行子类化,然后您的子类可以直接访问窗口接收到的所有消息。

  2. SetWindowsHookEx()使用并查看目标HWND接收的所有消息在 DLL 中实现全局消息挂钩。

无论哪种方式,当您的子类/挂钩检测到一个WM_CLLOSE和/或WM_DESTROY消息被传递到目标窗口时,它可以使用您选择的任何进程间通信 (IPC) 机制将该信息传达回您的应用程序 - 命名管道、命名事件、套接字、邮槽、窗口消息等

于 2015-03-29T03:24:14.767 回答