GetAsyncKeyState - запись кириллицы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Kissa2k, 15 Sep 2008.

  1. Kissa2k

    Kissa2k New Member

    Joined:
    1 Jul 2008
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Здраствуйте! Есть такая WinAPI функция GetAsyncKeyState, она позволяет узнать нажата ли клавиша с кодом который в ее аргументе.. Да вообщем наверное вы знаете, её часто используют в простых кейлоггерах ;)
    Я пытаюсь сделать такой кейлоггер, вроде все получается, но вот только при любой раскладке клавиатуры пишутся только латинские буквы.. Как всетаки получать русские буквы при русской раскладке? Мне знакомый говорил про функцию ToAscii, но у меня с ней ничего не выходит =_= Если не сложно, то можно и пример на Си.
    Спасибо.
     
  2. Zabuldon

    Zabuldon Elder - Старейшина

    Joined:
    6 Apr 2008
    Messages:
    99
    Likes Received:
    6
    Reputations:
    0
    function get_key(vkey: Word): string;
    var
    keystate: TKeyboardState;
    retcode: Integer;
    begin
    Win32Check(GetKeyboardState(keystate));
    SetLength(Result, 2);
    retcode := ToAscii(vkey,
    MapVirtualKey(vkey, 0),
    keystate, @Result[1],
    0);
    case retcode of
    0: Result := '';
    1: SetLength(Result, 1);
    2: ;
    else
    Result := '';
    end;
    end;



    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
    Shift: TShiftState);

    begin
    ShowMessage(Get_Key(Key));
    end;