Hexcode nicht druckbarere Zeichen/Tasten
-
Hallo,
wahrscheinlich ist es simpel, aber ich komme dennoch ncht auf eine Lösung.
Ich hätte gerne den Hex-Scancode einer Taste bzw. Tastenkombination, die gedrückt wird. Habe dazu folgendes auf die Schnelle gebastelt:void __fastcall TForm1::Memo1KeyPress(TObject *Sender, char &Key) { AnsiString newstring; if(Key < 16) newstring.sprintf("ASCII-Code(hex): 0x0%x",Key); else newstring.sprintf("ASCII-Code(hex): 0x%x",Key); Memo1->Lines->Add(newstring); Key = 0x00; }
Mein Problem an diesem Code:
Er gibt mir nur den Scancode druckbarer Zeichen und von Space aus.
Ich hätte aber ach gerne die anderen, also Pfeiltasten, Bild auf, Bild ab, F1 bis F12, etc.Wäre wäre so nett, mir kurz auf die Sprünge zu helfen?
Danke.
-
Sieht so aus, als sei es nicht der Scancode, sondern der ASCII Code des Zeichens (Der Scancode ist ein WORD IIRC). Schau dir mal die Funktionen isprint/isalpha an, vielleicht helfen dir die weiter.
-
Sorry, war natürlich absoluter Blödsinn, dass ich von Scancode gesprochen habe. Habe ja selber in die Textausgabe meines sprintf reingeschrieben, dass es der hexadezimale ASCII-Code ist. Und genau den brauche ich auch.
Allerdings, um auf mein Problem zurückzukommen, auch für die nicht druckbaren Zeichen. Und mein kleiner Code sagt halt nichts, wenn ich z.B. eine die F1 bis F12-taste oder Entf. oder, oder, drücke.
Und geben tut es diese Codes ja auf jeden Fall, stehen ja auch alle in der winuser.h.
Nur wie schaffe ich es, dass mein kleiner Code aus meinem ersten Posting mir die auch wiedergibt?
-
OK, manchmal führt auch spielen zur Lösung.
Man nehme als Eigenschaft des Memofeldes nicht OnKeyPress sondern OnKeyUp, und schon werden Wünsche wahr
Dennoch danke an alle, die mitgedacht haben.