Delphi - Lenyomott billentyű nevének meghatározása

forráskód letöltése
Mellékelt példából megtudhatjuk, hogy miként kérdezhető le egy lenyomott billentyű neve. Így például az A billentyű lenyomásakor az A sztringet kapjuk meg, de egy Enter lenyomása esetén az Enter sztringet szolgáltatja a függvény. Ehhez a GetKeyNameText függvényre lesz szükségünk, és arra hogy a WM_KEYDOWN eseménnyel figyeljük az egyes billentyűk lenyomását.

Amikor ez az esemény bekövetkezik, akkor némi konvertálás után a kérdéses szöveg lekérdezhető. A visszakapott sztring nyelve az adott operációs rendszer nyelvétől függ, így például kaphatunk olyan szöveget is, hogy Fel, Le, vagy Szürke Enter, de lehet Top, Left is.
procedure TForm1.WMKeyDown(var Msg: TWMKey);
var
  st: array[0..63] of char;
  sc: integer;
  kd: Longint;
begin
  inherited DoKeyDown(Msg);
  sc:=MapVirtualKey(Msg.CharCode, 0);
  kd:=Longint(sc) shl 16;
  if (Msg.KeyData and $1000000)<>0 then begin
    kd:=kd+$1000000;
  end;
  if (sc=0) or (GetKeyNameText(kd, @st, 64)=0) then begin
    Label1.Caption:='';
  end else begin
    Label1.Caption:=st;
  end;
end;