PDA

Просмотр полной версии : GetAsyncKeyState - запись кириллицы


Kissa2k
15.09.2008, 22:29
Здраствуйте! Есть такая WinAPI функция GetAsyncKeyState, она позволяет узнать нажата ли клавиша с кодом который в ее аргументе.. Да вообщем наверное вы знаете, её часто используют в простых кейлоггерах ;)
Я пытаюсь сделать такой кейлоггер, вроде все получается, но вот только при любой раскладке клавиатуры пишутся только латинские буквы.. Как всетаки получать русские буквы при русской раскладке? Мне знакомый говорил про функцию ToAscii, но у меня с ней ничего не выходит =_= Если не сложно, то можно и пример на Си.
Спасибо.

Zabuldon
21.09.2008, 02:09
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;