Как получить окно, открытое / закрытое / свернутое сообщения от родного приложения? - PullRequest
1 голос
/ 31 марта 2010

Трудно написать хорошее название для этого.

Я работаю над приложением WPF, которое должно знать о существовании всех других открытых окон в системе. Я могу сделать это, просто вызывая собственный метод EnumWindows, и я могу вызывать другие собственные методы, чтобы отфильтровать только те окна, которые меня интересуют.

Проблема, с которой я столкнулся, заключается в том, что я хочу знать, когда окно открывается или закрывается (и, в идеале, сворачивается). Я могу сделать это путем опроса EnumWindows, но я считаю, что это довольно медленно, даже если я перенесу его в другой поток.

Есть ли лучший способ получать уведомления об открытии / закрытии / сворачивании окна? Имейте в виду, что мои знания неуправляемого кода довольно ограничены.

Ответы [ 2 ]

1 голос
/ 31 марта 2010
1 голос
/ 31 марта 2010

Вы можете использовать хук Windows для этого типа вещей.

Как правило, после настройки перехвата ваш обратный вызов будет вызываться всякий раз, когда будут вызывать интересующие вас сообщения.

Есть хороший пример codeproject для установки глобальных системных перехватчиков с кодом C #.
Примечание: в этом проекте есть неуправляемый компонент c ++, но вам не нужно работать с ним напрямую.

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