Einzelnen Beitrag anzeigen

Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#1

ToAscii verändert Zustand der Tastatur

  Alt 19. Sep 2007, 21:09
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?
Angehängte Dateien
Dateityp: zip toasciitest_206.zip (216,1 KB, 6x aufgerufen)
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat