2012-06-12 1 views
1

Я собираюсь подключить child window к внешнему. Детское окно будет немодальным диалогом. Поскольку я не являюсь исходным кодом внешнего приложения (на самом деле Microsoft FSX), я понятия не имею, как подключиться к контуру сообщения или обратного вызова LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM) самого родительского окна.Цикл сообщения (насос) при подключении детского окна из внешнего приложения

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

Что было бы правильным путем?

- Редактировать как ответа относительно SetWindowsHookEx функции -

философу:

  1. How to hook external process with SetWindowsHookEx and WH_KEYBOARD
  2. SetWindowsHookEx in C#
  3. Может быть, не работает, другой SetWindowsHookEx Example
+1

Как вы его прикрепляете? просто SetParent? Если это так, то он использует ваш насос сообщений и обработчик, но может вызвать «странности». – Deanna

+0

Я просто установил дескриптор родительского окна, когда создаю его. Что было бы правильно, без «странностей»? –

+1

Управление хостингом из разных процессов и потоков пользовательского интерфейса вызывает проблемы для фокуса, активации и т. Д. Нет стандартного способа сделать это без помощи окна процесса хоста. Наилучшим способом без его помощи является DLL-инъекция, поэтому она запускается в процессе и в главном потоке пользовательского интерфейса. – Deanna

ответ

3

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