Mir fällt auch nix elegantes ein...nur ein manuelles überprüfen ob die Maustaste (links ist 1) gedrückt wurde...
Ich poste mal meinen Code, kannste ja solang benutzen, bis jemand das richtige postet...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure aThread(); begin while true do if boolean(getAsyncKeyState(1)) then if form1.active then form1.clickaufform(); end; |
Der Thread überprüft durchgängig ob die linke Maustaste gedrückt wurde.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| function active():boolean; var P : TPoint; begin getCursorPos(P); active := ((p.x > form1.Left) and (p.x < form1.left+form1.Width) and (p.Y > form1.top) and (p.Y < form1.Top+form1.Height)); end; |
Die Funktion überprüft ob der Klick auch auf der Form passiert ist, und nicht irgendwo auffem Desktop.
In die Prozedur ClickAufForm kannst du dann das eintragen was du gemacht haben möchtest (also z.B. dein Showmessage).
Den Thread im OnCreate aufrufen mit
CREATETHREAD
KeyPreview war übrigens auch mein erster Gedanke...JaketheSnake, KeyPreview ist auch eine Property und kein Event.