C # Получение окна с фокусом? - PullRequest
5 голосов
/ 30 мая 2011

Я делаю приложение на C # WPF, и каждый раз, когда пользователи щелкают где-то за пределами моего приложения, я хочу отобразить предупреждение с НАЗВАНИЕМ окна, в котором щелкнули.Для обнаружения кликов за пределами моего приложения я использую LowLevelMouseProc.Но как бы получить окно с фокусом в C #?

Заранее спасибо!

РЕДАКТИРОВАТЬ: Я знаю, что это не связано с моим первоначальным вопросом, но какя бы тоже сфокусировал управление?

Ответы [ 2 ]

6 голосов
/ 30 мая 2011

GetForegroundWindow должно это сделать.

3 голосов
/ 30 мая 2011

Относительно вашего последующего вопроса о том, как получить элемент управления с фокусом, вы можете получить HWND сфокусированного элемента управления, используя GetGUIThreadInfo . Обратите внимание, что вы передаете этот поток, который владеет внешним окном, а не само внешнее окно (функция docs говорит вам, как получить идентификатор потока из дескриптора внешнего окна). Сфокусированный HWND возвращается через элемент GUITHREADINFO.hwndFocus.

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

...