Как заблокировать клавиатуру, не блокируя мышь? (простейший способ)

Тема в разделе "WASM.BEGINNERS", создана пользователем Magnum, 3 янв 2012.

  1. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    Привет
    Всех с прошедшим НГ!
    Нужно самым простейшим образом заблокировать клавиатуру полностью. Чтобы не было реакции ни на одну кнопку или их комбинацию, при этом мышь должна работать.
    Т.е. есть окошечко и 2 кнопки (вкл. клавиатуру и выкл. клавиатуру).

    BlockInput() подходит, но локает все, включая мышь. Есть ли альтернатива, чтобы только для клавиатуры?
     
  2. f2065

    f2065 Eugene

    Публикаций:
    0
    Регистрация:
    18 авг 2010
    Сообщения:
    24
    Адрес:
    Russia,Moscow
    Например, через хук…

    Хотя C-A-D будет работать… Power/Sleep тоже (хотя их тоже можно заблокировать - если в недрах управления электропитанием их отключить).

    Код (Text):
    1. invoke GetModuleHandleA, 0
    2. mov [hInstance], eax
    3. invoke SetWindowsHookExA, WH_KEYBOARD_LL, key_hook, eax, 0
    4. mov [hHook], eax
    5. test eax, eax
    6. jz hook_error
    7. proc key_hook, .code, .wParam, .lParam
    8. mov eax, [kbd_state] ; если там лежит 0 - клава работает, если не 0 - не работает…
    9. test eax, eax
    10. jnz .m1
    11. invoke CallNextHookEx, [hHook], [.code], [.wParam], [.lParam]
    12. .m1: ret
    13. endp
    14. kbd_state dd 0
    15. hHook dd 0
    16. hInstance dd 0