Я пытаюсь создать приложение типа Launchy / Enso / etc., Которое появляется, когда пользователь нажимает клавишу Caps Lock.
Чтобы сделать это, мне нужно было установить низкоуровневый хук клавиатуры (WH_KEYBOARD_LL
), из которого я впоследствии создал поток для отображения диалогового окна для представления пользователю.
Проблема в том, что когда я каким-то образом краду фокус (например, нажимая на другое окно) и затем нажимаю Caps Lock с небольшой задержкой, мое окно не получает ввод с клавиатуры: ввод идет в фоновое окно, хотя мое окно "активно" (от просмотра строки заголовка).
Конечно, это довольно раздражает, так как я в итоге набираю что-то вроде "visu" (для "Visual Studio") внутри текстового процессора (или окна чата ...) и нажимаю Войдите, понимая, что это не то, что я хотел.
(Забавно, что после 3-секундной (или около того) паузы строка заголовка моего окна внезапно становится "неактивной", даже если она вообще не была активной!)
Как мне обойти этот «защитный» механизм, чтобы на самом деле активировать мое окно?