У меня есть приложение .NET, которое должно уметь определять, когда конкретное окно получает и теряет фокус. Конкретное окно, которое меня интересует, принадлежит другому приложению, которое я не контролирую, хотя у меня есть дескриптор окна.
Я действительно ищу лучший способ решить эту проблему. Пока что я вижу 2 возможности:
- Использование вызова Win32 по таймеру для отслеживания любых изменений состояния. Не очень хорошо, так как есть риск пропустить изменения состояния, например. если окно становится активным, то неактивным в течение интервала таймера
- Использование хуков (SetWindowsHookEx) для перехвата сообщений в окно. Похоже, это должно работать, но обеспокоены тем, что а) хуки глобального уровня не будут работать из кода .NET, поэтому они должны быть родными и б) может ли это считаться активностью типа вируса / кейлоггера, заблокированной ОС?
Я уверен, что есть и другие варианты, если так, я бы хотел их услышать!
задан Paul Nearney 22 August 2011 в 17:02
поделиться