Как бы захватить пользователь, нажав Ctrl дважды (Ctrl +Ctrl) в глобальном масштабе. Я хочу, чтобы иметь окно моего приложения скрыто, а затем сделать его видимым, когда пользователь вызывает его с помощью CtrlCtrl нажатие клавиш аналогично Google Quick Search Box. Пользователь может сосредоточиться на другом окне. Я посмотрел на RegisterHotKey, но это похоже на MODIFIERS + character key
, если я не ошибаюсь.Как захватить нажатия клавиш CTRL + CTRL в моем приложении Win32?
1
A
ответ
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 пресс.
Где происходит ключевое дебунирование? –
Лучше использовать GetDoubleClickTime (http://msdn.microsoft.com/en-us/library/ms646258(VS.85).aspx), чем жесткий код в 500. – Bill
@ Томас Мэтьюз: Я не совсем понимаю, что вы имеете в виду, что здесь нужно только прессованное событие, которое является «WM_HOTKEY». – AndiDog