Перехват клавиатуры с зажатым shift

Тема в разделе "WASM.WIN32", создана пользователем nerezus, 21 май 2008.

  1. nerezus

    nerezus New Member

    Публикаций:
    0
    Регистрация:
    23 сен 2006
    Сообщения:
    89
    Код (Text):
    1.     KeyboardProc proc nCode:DWORD,wParam:DWORD,lParam:DWORD
    2.         .if nCode == HC_ACTION
    3.             mov eax, 40000000h
    4.             and eax, lParam
    5.             .if eax
    6.  
    7. ...
    8.  
    9.                 .if processKey == 0 ; обслуживаем при 0
    10.  
    11.                         .if wParam >= 65 && wParam <= 90
    12.                             invoke keybd_event, 16, 0, KEYEVENTF_KEYUP, 0 ; отжимаем shift
    13.                             invoke keybd_event, 8, 0, 0, 0 ; нажимаем backspace
    14.                             invoke keybd_event, 8, 0, KEYEVENTF_KEYUP, 0 ; отжимаем backspace
    15.                             invoke keybd_event, wParam, 0, 0, 0
    16.                             invoke keybd_event, wParam, 0, KEYEVENTF_KEYUP, 0
    17.                             mov al, 2 ; 2 следующих нажатия не обрабатываем
    18.                             mov processKey, al
    19.                         .endif
    20.                    
    21.                 .else
    22.                     mov al, processKey  ;
    23.                     dec al              ; уменьшаем количество необрабатываемых нажатий на одно
    24.                     mov processKey, al  ;
    25.                 .endif
    26.  
    27. ...
    Должно переводить в нижний регистр буквы... Не переводит - шифт как-то не отжимается (

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

    Что делать?
     
  2. nerezus

    nerezus New Member

    Публикаций:
    0
    Регистрация:
    23 сен 2006
    Сообщения:
    89
    Проблема решена, при
    Код (Text):
    1. invoke keybd_event, 8, 0, 0, 0 ; нажимаем backspace
    он нажимался. Просто перенес "отжимаем shift" после "отжимаем backspace" - все заработало