Hey there
Ich habe Probleme, bei einem Keylogger mit diakritischen Zeichen umzugehen. Wenn ich den KeyCode, welcher mir korrekt vom Hook geliefert wird, über ToAscii umwandle, werden Zeichen wie ^ ´ ¨ nicht mehr richtig ausgegeben.
Ich habe das auf ein kleines Testprogramm runtergebrochen. Ich möchte im OnKeyDown eines Memos anhand des KeyCodes die Zeichen finden, die nachher im OnKeyPress im Memo erscheinen:
Delphi-Quellcode:
type
DChar = array[0..1] of Char;
function VKeyToChar(vkCode: Word; out Buffer: DChar): Integer;
var
KS: TKeyboardState;
I: Integer;
begin
GetKeyboardState(KS);
Buffer:= #0#0;
Result:= ToAscii(vkCode, MapVirtualKey(vkCode, 2), KS, @Buffer, 0);
end;
procedure TMainForm.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
B: DChar;
begin
Edit1.Text:= IntToStr(Key);
if VKeyToChar(Key, B) >= 0 then
Edit2.Text:= B
else
Edit2.Text:= '[DEAD]';
end;
Problem: Wenn z.B. ^ gedrückt wird, liefert VKeyToChar '^^', aber im Memo selbst ändert sich nichts...
Kann mir hier jemand weiterhelfen?