Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Tastaturbelegung herausfinden (z.b. [Shift] + [5] = &

  Alt 22. Nov 2008, 18:18
Hallo Florian,

so könntest du prinzipiell vorgehen:

Delphi-Quellcode:
// uses Windows

// Einsatz z.B. in FormKeyDown()
function ShiftedKey (aKey: Word): Char;
var
  KeyState : TKeyboardState;
  Buffer : array [0..1] of char;
  Count : Integer;
begin
  ZeroMemory (@KeyState, SizeOf(KeyState));
  KeyState[VK_SHIFT] := 128; // Shift-Taste gedrückt

  ZeroMemory (@Buffer, SizeOf(Buffer));
  Count := ToAscii(aKey, MapVirtualKey(aKey, 0), KeyState, @Buffer, 0);

  if (Count = 1) then
    Result := Buffer[0]
  else
    Result := #0;
end;

// Einsatz z.B. in FormKeyPress()
function ShiftedChar (aChar: Char): Char;
begin
  Result := ShiftedKey(VKKeyScan(aChar));
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  Caption := ShiftedKey(Key);
end;
Beachte, dass in den Routinen mögliche Fehlercodes nicht ausgewertet werden.

Gruß Hawkeye
  Mit Zitat antworten Zitat