Как централизованно отслеживать сообщения, отправленные в приложение или winform - PullRequest
3 голосов
/ 19 ноября 2010

Как я могу ловить сообщения для всех окон из одного центрального места в моем приложении (winforms). Мне нужно одно центральное место в моем приложении (например, programm.cs или Mainform), которое может реагировать на каждое создание или чередовать каждое отображение (WM_FORMSHOW 0x18) формы. Формы копируются от других разработчиков, AddIns, но они активируются в домене приложения по умолчанию. Несмотря на то, что активация в другом домене приложений также была бы интересной.

Окружающая среда .Net 3.5 или 4 и c #.

спасибо

1 Ответ

1 голос
/ 19 ноября 2010

Вы можете перехватить сообщения Windows, создав IMessageFilter и добавив его в приложение с помощью Application.AddMessageFilter.

Внутри вашего IMessageFilter класса реализации вы реализуете PreFilterMessage, где вы можете искать все, что хотите - ему передается Message, который содержит те же данные, что и C-Стиль сообщения Windows цикла получит.Обратите внимание, что вы также можете добавить IMessageFilter к определенной форме, если хотите, как и весь цикл обработки сообщений приложения.

...