SetWindowsHookEx
поддерживает WH_CBT
тип хука, который срабатывает каждый раз, когда пользователь переключается на другое окно или приложение. Как установить хуки для Windows из C # .
Однако, если вам не нужна идеальная точность, гораздо проще просто вызвать GetForegroundWindow()
один раз в секунду и проверить, изменилось ли числовое значение возвращенного HWND
. Для чего-то вроде приложения для отслеживания активности, которому не нужно замечать интервалы в полсекунды, этот метод является лучшим выбором.
Советы:
GetForegroundWindow()
возвращает дескриптор окна, которое в данный момент находится в фокусе (который может быть рабочим столом или панелью задач или плавающим виджетом, поэтому вам может понадобиться отфильтровать это), или нулевой дескриптор, если в данный момент окно не сфокусировано.
- Это сверхбыстрый процесс, поэтому не стоит вредно называть его десятки или сотни раз в секунду.
- Значения дескриптора окна уникальны (по крайней мере, в текущем пользовательском сеансе), отличаются, даже если они принадлежат разным приложениям, и они назначаются так, что уничтоженный дескриптор почти никогда не назначается немедленно.