Перехватить закрывающее сообщение окна, открытого с ShellExecuteEx

У меня есть надоедливая программа, которая не сохраняет свою позицию при закрытии.
Я сделал небольшую консольную программу, которая открывает его и перемещает окно в другую позицию, теперь я хочу сохранить позицию, когда программа закрывается, как я могу перехватить закрывающее сообщение, чтобы я мог сохранить позицию, прежде чем окно разрушит само себя?

0

Решение

Поскольку вы можете расположить окно после запуска его приложения, у вас, очевидно, есть окно HWND, Тем не менее, вы не можете подкласс HWND через границы процесса, поэтому ваше приложение не может подключить окно напрямую. Вы должны либо:

  1. удаленно внедрить некоторый код в запущенный процесс, чтобы создать подкласс целевого окна из контекста своего собственного процесса, тогда ваш подкласс имеет прямой доступ ко всем сообщениям, которые получает окно.

  2. реализовать глобальный хук сообщений в DLL с помощью SetWindowsHookEx() и посмотрите на все сообщения, которые цель HWND получает.

В любом случае, когда ваш подкласс / хук обнаруживает WM_CLLOSE и / или WM_DESTROY доставляя сообщение в целевое окно, оно может передавать эту информацию обратно в ваше приложение, используя любой механизм межпроцессного взаимодействия (IPC) по вашему выбору — именованный канал, именованное событие, сокет, почтовый ящик, оконное сообщение и т. д.

0

Другие решения


По вопросам рекламы [email protected]