Autor Beitrag
Takeshi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: So 12.10.03 03:15 
Hallo!

Folgenden Code habe ich verwendet um die Bezeichnung einer gedrückten Taste herauszufinden:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var Buffer:array [0..255of Char;
begin
  GetKeyNameText(Key shl 16, Buffer, SizeOf(Buffer));
  Edit1.Clear;
  Edit1.Text:=Buffer;
end;

Leider ergibt das ganz und gar nicht die gedrückten Tasten, sondern zb:
Taste A = F7
Taste N = + (ZEHNERTASTATUR)
LEER Taste = D
PFEIL Taste OPEN = L
...

Ich verzweifle leider dran, da ich mir den Code ohnehin sehr mühsam zusammengekramt habe und mir das tiefere Verständnis fehlt.
Hat jemand eine Idde, woran sowas liegt ?
Ist der Code vielleicht OK und mein Windows hat ne Macke ?

Gruß, Christoph :(
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: So 12.10.03 11:12 
hier erstmal ein Auszug aus dem SDK:
Zitat:
The GetKeyNameText function retrieves a string that represents the name of a key.

int GetKeyNameText(

LONG lParam, // second parameter of keyboard message
LPTSTR lpString, // address of buffer for key name
int nSize // maximum length of key-name string length
);


Parameters

lParam

Specifies the second parameter of the keyboard message (such as WM_KEYDOWN) to be processed. The function interprets the following portions of lParam:

Bits Meaning
16-23 Scan code.
24 Extended-key flag. Distinguishes some keys on an enhanced keyboard.
25 "Don't care" bit. The application calling this function sets this bit to indicate that the function should not distinguish between left and right CTRL and SHIFT keys, for example.


lpString

Points to a buffer that will receive the key name.

nSize

Specifies the maximum length, in characters, of the key name, including the terminating null character. (This parameter should be equal to the size of the buffer pointed to by the lpString parameter.)



Return Values

If the function succeeds, a null-terminated string is copied into the specified buffer, and the return value is the length of the string, in characters, not counting the terminating null character.

Remarks

The format of the key-name string depends on the current keyboard layout. The keyboard driver maintains a list of names in the form of character strings for keys with names longer than a single character. The key name is translated according to the layout of the currently installed keyboard. The name of a character key is the character itself. The names of dead keys are spelled out in full.


Warum verwendet du nicht THotKey ?

grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
Takeshi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: So 12.10.03 12:46 
MSCH hat folgendes geschrieben:
hier erstmal ein Auszug aus dem SDK:
[...]

Den kenne ich. Mir sagt das aber leider nicht, wo der Fehler sein könnte. Habe ich dem SDK zufolge was falsch gemacht? :?

Zitat:
Warum verwendet du nicht THotKey ?


THotKey habe ich noch nie verwendet, ich habe jetzt ganz einfach mit dem OnKeyDown Ereignis meine Shortcuts in einer Ini gespeichert. Bin damit eigentlich sehr zufrieden. Mir geht es jetzt eigentlich nur noch darum, dem Benutzer statt dem Virtual Key Code den richten Namen der Taste zu sagen, die er gedrückt hat.

greez + danke schomal, Takeshi