2010-02-10 5 views
1

Как бы захватить пользователь, нажав Ctrl дважды (Ctrl +Ctrl) в глобальном масштабе. Я хочу, чтобы иметь окно моего приложения скрыто, а затем сделать его видимым, когда пользователь вызывает его с помощью CtrlCtrl нажатие клавиш аналогично Google Quick Search Box. Пользователь может сосредоточиться на другом окне. Я посмотрел на RegisterHotKey, но это похоже на MODIFIERS + character key, если я не ошибаюсь.Как захватить нажатия клавиш CTRL + CTRL в моем приложении Win32?

ответ

3

Чтобы создать такую ​​горячую клавишу, сделайте следующее:

ATOM hotkey = GlobalAddAtom("Your hotkey atom name"); 
if(hotkey) RegisterHotKey(hwnd, hotkey, MOD_CONTROL, VK_CONTROL); 
else { ...error... } 

А затем обрабатывать WM_HOTKEY сообщений:

case WM_HOTKEY: 
    if(wParam == hotkey) 
    { 
     // CTRL pressed!!! 
    } 
break; 

Я думаю, вы будете выяснить себе, что вам нужно хранить ли CTRL ключ был нажат перед тем. Например, если он был нажат один раз за последние 500 мс, и пользователь снова нажимает его, у вас есть CTRL + CTRL пресс.

+0

Где происходит ключевое дебунирование? –

+2

Лучше использовать GetDoubleClickTime (http://msdn.microsoft.com/en-us/library/ms646258(VS.85).aspx), чем жесткий код в 500. – Bill

+0

@ Томас Мэтьюз: Я не совсем понимаю, что вы имеете в виду, что здесь нужно только прессованное событие, которое является «WM_HOTKEY». – AndiDog