Найти, какой MDI ребенок только что получил фокус Win32 API - PullRequest
1 голос
/ 16 января 2010

У меня есть программа с хостом MDI, и я хотел бы иметь возможность узнать, кто из них только что получил фокус, в основном, я хотел бы сделать событие изменения фокуса окна для этого приложения.

Приложение является сторонним, и у меня нет источника, у меня есть дескриптор окна основной программы и часть узла MDI.

Я знаю, что придется использовать Win32 API, но не знаю, какие именно.

Я пишу свое заявление на C #

Спасибо.

1 Ответ

1 голос
/ 17 января 2010

Я думаю, что вы ищете, перехватывает WM_SETFOCUS и WM_KILLFOCUS сообщения

Настоящая проблема в том, как вы собираетесь это сделать. Я предполагаю, что самый простой способ - установить hook , который является подпрограммой для мониторинга трафика сообщений в системе и обработки определенных типов сообщений, прежде чем они достигнут целевой процедуры окна. Вы делаете это с помощью SetWindowsHookEx функции winapi с типами хуков WH_CALLWNDPROC или WH_CALLWNDPROCRET. Некоторые примеры размещены на codeproject; также есть один на MSDN: Как установить хук Windows в Visual C # .NET

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

надеюсь, это поможет, с уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...