Собираю программу управления уровнем громкости. Для глобальных клавиш создаю thread, код которого ниже. Все работает, но приходится каждый раз заново нажимать ctrl. Сделал как написано в справочнике, поправте если понял не так. Код (Text): ;~~~~~~~~~~~~~~~~~~~~~~ Perception_Key proc hWnd :dword ; фоновая функция PK_01: .if (Thread_flag) ; проверяем клавиатуру invoke GetAsyncKeyState, VK_UP dec eax ; test eax, 00000001h jnz no_Ctrl_Up invoke GetAsyncKeyState, VK_CONTROL ; Ctrl + Up shl eax, 01 ; test eax, 80000000h jnc no_Ctrl_Up ; передаем оконной процедуре сообщение о нажатой комбинации invoke SendMessage, hWnd, WM_COMMAND, IDK_CTRL_UP, IDK_KEY no_Ctrl_Up: invoke GetAsyncKeyState, VK_DOWN dec eax ; test eax, 00000001h jnz no_Ctrl_Down invoke GetAsyncKeyState, VK_CONTROL ; Ctrl + Down shl eax, 01h ; test eax, 80000000h jnc no_Ctrl_Down invoke SendMessage, hWnd, WM_COMMAND, IDK_CTRL_DOWN, IDK_KEY no_Ctrl_Down: invoke Sleep, 200 jmp PK_01 .endif ret Perception_Key endp ;~~~~~~~~~~~~~~~~~~~~~~ спасибо.
Вот посмотри как сделал я чтоб управлять винампом на внешних клавишах моего бука. Точнее биты которые возвращает GetAsyncKeyState, у меня это в макросах KEY_PRESSED,KEY_TOGGLED.
khv_test Смотрел. Помогло. Сделаю как у тебя. Bohdan200 Пока как у тебя. Протестировал, работает. Окончательный вариант переделаю. Скопирвал с тебя сочетания клавиш, но ALT+PAUSE конфликтует с Punto Switcher. Заменил. Еще красиво сделан индикатор, сделаю такой же) Спасибо, тема закрыта.