Я пытаюсь сделать приложение вроде Launchy/Enso/etc., Которое появляется, когда пользователь нажимает клавишу Caps Lock.Как обойти «тайм-аут блокировки переднего плана» для активации моего окна?
Для этого мне нужно установить крючок клавиатуры низкого уровня (WH_KEYBOARD_LL
), из которого я впоследствии создаю поток, чтобы отобразить диалоговое окно для представления пользователю.
Проблема в том, что я как-то украл фокус (например, нажав на другое окно), а затем нажмите Caps Lock с небольшой задержкой, мое окно не получает ввод на клавиатуре: вход идет в фоновое окно, хотя мое окно «активно» (от просмотра строки заголовка).
Конечно, это становится очень раздражает, так как я тогда в конечном итоге, набрав что-то вроде «Visu» (для «Visual Studio») внутри текстового процессора (или окно чата ...) и нажимной Enter, withotu понимая, что он не делает то, что я намеревался.
(Забавно, что после 3-секундного (или так) пауза, строка заголовка моего окна вдруг становится «неактивным», даже если он никогда не был активен в первую очередь!)
Как я могу обойти этот механизм защиты до фактически активировать мое окно?
Raymond Chen покрыл это на Old New Thing ... вам нужно использовать функцию горячих клавиш оболочки вместо того, чтобы пытаться украсть фокус. –
@BenVoigt: Как мне сделать это с помощью Caps Lock при подавлении ввода? – Mehrdad
Я предлагаю вам начать с чтения всей серии «гонки вооружений» Раймонда. [Вот тот, о котором я уже упоминал] (http://blogs.msdn.com/b/oldnewthing/archive/2009/02/26/9445006.aspx). –