Определить, когда изменяются окна переднего плана - PullRequest
7 голосов
/ 04 мая 2011

Я знаю, с помощью функции GetForegroundWindow я могу получить текущий дескриптор активного окна, но теперь i want to detect when the active window (of any application) changes (become active). первое решение, которое приходит мне в голову, это

  1. сохранить текущее значение (дескриптор), возвращенное функцией GetForegroundWindow.
  2. с помощью компонента таймера снова проверьте значение, возвращаемое GetForegroundWindow, и сравните со старым значением.

Мне интересно, существует ли лучший способ сделать это, возможно, используя сообщение Windows или что-то еще.

1 Ответ

7 голосов
/ 04 мая 2011

Используйте SetWindowsHookEx для установки крюка CBT.MSDN описывает функцию обратного вызова , которую вы предоставите:

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

Вы будете заинтересованы в вызовах, в которых первый параметр - HCBT_Activate.Параметр wParam сообщит вам дескриптор окна.

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