Перейти к содержанию

C++ Hotkey


Рекомендуемые сообщения

Гуру кодинга, снова нужна ваша помощь.

Вообщем нужен универсальный метод, позволяющий "вешать" определенные процедуры на хоткеи. Желательно даже в то время, когда программа минимизирована/свернута в трей. Событие OnKeyPress почемуто не отлавливает нажатие, кроме того, элемент, на котором висит этот обработчик, должен быть сфокусирован, что также проблематично, например в событие OnKeyPress на StringGrid-е программа вообще не заходит.

+ Каким образом написать оптимальный обработчик события, отлавливающий хоткей? Делать это по таймеру с делеем 1 мсек наверное очень затратно *01

Ссылка на комментарий
В чем программу пишем?
rad studio 2010
Ну а вообще надо читать windows API
invoke RegisterHotKey,hDlgMain,0C000h,NULL,VK_F5

;*************************
.ELSEIF uMsg == WM_HOTKEY
;*************************
.if wParam == 0C000h
invoke SendMessage,hCBO1,CB_RESETCONTENT,NULL,NULL
jmp reset
.endif

pd_ispug.gifНагуглил это чудо, что с ним делать?)

Ссылка на комментарий

Для примера, перехватим комбинацию ALT + CONTROL + ENTER.

Сначала регистрируем горячую клавишу:

bool RHKret = RegisterHotKey(Form1->Handle,         // Handle окна, которому отправлять сообщения WM_HOTKEY
0x00F, // УСЛОВНЫЙ идентификатор горячего ключа
MOD_ALT + MOD_CONTROL, // модификаторы
VK_RETURN // код клавиши
);
if (RHKret) // если всё о′кей
{
ShowMessage("Hot Key Registred");
}

Затем размещаем на Form1 TApplicationEvents и в OnMessage пишем:

if (Msg.message == WM_HOTKEY) // сообщение наше
{
if (Msg.wParam == 0x00F) // идентификатор наш
{
ShowMessage("www.sources.ru"); // громко кричим "уря"
}
}

Когда горячая клавиша больше не нужна, отключаем ее:

UnregisterHotKey(Form1->Handle, // Handle окна
0x00F // наш идентификатор горячего ключа
);

http://www.excode.ru/art7095p5.html

Попробуй.

Ссылка на комментарий

Спасибо)

Только вот присутствует ощутимая задержка между нажатием хоткея и выполнением нужного кода. А так все идеально. Сайт в избранное)

зы 0x00F я так понял подобие ID хоткея. А какие еще допустимы? На 0x00G ругается

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...