KeyLogger - перевод в юникод

Тема в разделе "WASM.WIN32", создана пользователем new_codder, 26 ноя 2007.

  1. new_codder

    new_codder New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2007
    Сообщения:
    1
    http://www.wasm.ru/forum/viewtopic.php?id=18250

    в этом посте дан обсуждение перевода вирт.сканкода в юникодовый символ
    в своём кейлоггере реализовал, а оно не работает
    даже при русской раскладке дайт англыйские буквы но в юникоде

    короче может ли кто дать рабочий пример перевода нажатой клавиши в русской раскладке в юникод

    спасибо
     
  2. Miller Rabin

    Miller Rabin New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2006
    Сообщения:
    185
    ThreadID - ИД потока, которому принадлежит активное окно

    local KeyboardState[256]: BYTE, ResultKey[10]: WORD
    lea ecx, [KeyboardState]
    invoke GetKeyboardState, ecx
    test eax, eax
    je .lbNext
    invoke GetKeyboardLayout, [ThreadID]
    mov ecx, [lParam]
    invoke ToUnicodeEx, DWORD [ecx], DWORD[ecx+4], KeyboardState, ResultKey, 8, 0, eax

    .lbNext:
    .....

    ;В ResultKey получаешь печатный символ в юникоде в раскладке потока активного окна.
    ;Для клавиш типа F1, Shift и т.п возвращает 0. Для них можно использовать GetKeyNameTextW.
     
  3. seiko

    seiko New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    98
    а можно вопрос по поводу масмовкого кода,
    чё делают
    lea ecx, [KeyboardState]
    ....
    test eax,eax
    je.lbNext

    я просто на масме не програмю?
     
  4. LazzY

    LazzY New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2006
    Сообщения:
    123
    seiko чтото типа такого:
    i:=ToUnicode(wParam,uScanCode,KeyState,BufChar,sizeof(BufChar),uFlags);