Сфокусируйтесь на реализации общесистемного окна поиска - PullRequest
1 голос
/ 16 августа 2010

в моем приложении (http://tabbles.net) Мне нужно предложить комбинацию быстрого поиска *1004*, как вы видите на рабочем столе Google: если вы нажмете CTRL + CTRL в любое время (независимо от того, какой приложение активно и имеет фокус клавиатуры), должно появиться диалоговое окно, в котором вы должны набрать текст для поиска и нажать клавишу ввода.

Это требует кражи фокуса из активного приложения.

До сих пор мне удавалось установить глобальный хук клавиш и использовать его для определения комбинации клавиш и отображения диалогового окна. Я сделал диалог верхним, чтобы он всегда отображался поверх активного приложения. Однако пользователь не может ничего вводить в диалоговом окне, не щелкнув по нему мышью, потому что я не могу выделить текстовое поле внутри диалогового окна. Поэтому пользователь должен щелкнуть мышью, прежде чем набрать , что является обременительным.

Есть ли способ обойти предотвращение хищения фокуса Windows ? Спасибо.

1 Ответ

1 голос
/ 18 августа 2010

Я смог сделать это, используя RegisterHotKey вместо глобального ключевого хука.

Важно: Мне также нужно было использовать System.windows.input.Keybord.Focus (textbox) вместо просто textbox.focus().

...