Регистрация глобального хоткея
В проге нужно зарегать глобальный хоткей Win Z + Z. Нужен хелп:
- Проверить, не занят ли этот хоткей
- Как повесить обработчик на него
Советы не нужны. Нужны примеры кода для fasm. Вопросы для M$ Windows, но если будут решения для X11, в частности для xfce4, я буду еще более благодарен!
Ответы (1 шт):
Автор решения: PRODIGY
→ Ссылка
Горячую клавишу назначает функция RegisterHotKey(),
описание здесь: https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-registerhotkey
Вот пример для комбинации Win+Z:
format pe console
include 'win32ax.inc'
entry start
;-------------------
.data
HOTKEY_ID = 1 ; ID комбинации
MOD_WIN = 8 ;
mesg MSG ; назначаем алиас структуре MSG
;-------------------
.code
start: invoke RegisterHotKey, 0, HOTKEY_ID, MOD_WIN, 0x5A ; 5Ah = Z
@wait: invoke GetMessage,mesg,0,0,0 ; цикл обработки сообщений
cmp [mesg.message],WM_HOTKEY ; это хоткей?
jne @wait ; нет: ждать..
cinvoke printf,<10,' Hotkey pressed!',0> ; иначе: делаем что нужно
invoke UnregisterHotKey,0,HOTKEY_ID ; удаляем назначенный хоткей
cinvoke getch ; ждать любую клавишу
cinvoke exit,0 ; на выход
;-------------------
section '.idata' import data readable
library msvcrt, 'msvcrt.dll', user32, 'user32.dll'
import msvcrt, printf,'printf', exit,'exit', getch,'_getch'
include 'api\user32.inc'