Получите вновь созданное окно с помощью хуков Win32 API - PullRequest
0 голосов
/ 19 мая 2010

Это может быть длинным коротким или даже невозможным, но не вредно спрашивать.

То, что я пытаюсь сделать, - это контролировать приложение на наличие новых окон, которые оно создает в элементе управления MDI. Я реализовал перехват в C # и могу перехватить сообщение окна MDICREATE, но поскольку мне нужно получить информацию об окне после его создания, сообщение MDICREATE не очень помогает, потому что на этом этапе окно не было создано в другом приложение еще.

Не вдаваясь в подробности, мне просто нужно увидеть, когда было создано новое окно.

Возможно ли это?

Спасибо

Ответы [ 3 ]

1 голос
/ 19 мая 2010

Мне не известно о другом сообщении, которое получает информацию, которую вы ищете, от руки. Но если это сообщение работает для вас, вы можете перехватить это сообщение, а затем выполнить другое сканирование окон, чтобы найти то, что вам не хватает. Вы можете перечислить дочерние окна родительского окна. Используйте Spy ++, чтобы увидеть точную иерархию окон.

0 голосов
/ 19 мая 2010

Два варианта с макушки головы.

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

  2. Если вам нужно запустить свой код после WM_MDICREATE или WM_MDIACTIVATE, вы можете опубликовать новое пользовательское сообщение из одного из этих сообщений, которое затем обрабатывается после завершения этих сообщений. Затем вы пишете свой код для обработки пользовательского сообщения.
0 голосов
/ 19 мая 2010

Если вы можете наблюдать за определенным вызовом функции, я бы использовал некоторую библиотеку перехвата, чтобы захватить это (EasyHook приходит на ум).

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

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