Entwickler-Ecke
Windows API - Tastendrücke simulieren
Paddii - Mi 04.10.06 09:46
Titel: Tastendrücke simulieren
Hi Leute.
Ich Programmiere seit ca. 8 Monaten gelegentlich mit Delphi 6 und wollte ein Programm schreiben, dass einen Tastendruck simuliert, oder Tastenkombinationen. Bisher weiß ich nur, wie man einen tastendruck abfragt, aber leider nicht mehr.
Zum Beispiel soll das Programm zu einer bestimmten Uhrzeit (oder in gewisse Zeitabständen) einen druck auf F1 simulieren, sodass dann das geschieht, was mein Computer tun würde, wenn ich F1 gedrückt hätte.
Nun noch zu den tastenkombinationen, damit meine ich sowas wie: [Windowstaste] + E (Z.B. um den Explorer zu öffnen)
Vielleicht sollte ich dazu sagen, dass ich mir Delphi selbst beigebracht habe und deshalb vll nicht alles verstehe, was ihr schreibt, also bitte möglichst leicht erklären. ;-)
Freue mich schon auf Eure Antworten
Mfg Paddii
Paddii - Mi 04.10.06 17:10
Thx
ich werds mal ausprobieren, wenn ich wieder Zeit hab, muss mal sehen ob ich damit klar komme, weil ich normalerweise immer erst alles verstehen will, bevor ich es benutze, aber vll kommt das ja noch.
jaenicke - Mo 09.10.06 03:40
ccdee hat folgendes geschrieben: |
noch einfacher geht es hiermit:
du setzt einen Timer auf deine Form, setzt ihn zB auf 200ms und klicks 2 mal drauf
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm2.Timer1Timer(Sender: TObject); begin if (GetAsyncKeyState(VK_F7) <> 0) then Button1.Click; end; |
Dies ist jetzt ein Beispiel für die Taste F7 |
Ähhh, die Frage war wie man einen Tastendruck simuliert! Nicht wie man nachsieht ob eine Taste gedrückt ist...
ccdee - Mo 09.10.06 11:25
Titel: /
ups ja sorry, da bin ich wohl zu schnell über die Frage drübergeflogen ;)
Paddii - Mi 11.10.06 08:45
Danke Leute,
Hab mich für die zweite Methode im SwissDelphiCenter entschieden.
Das mit dem keybd_event.
Funktioniert super, genau wie ich es wollte.
Mordilion - Mi 11.10.06 10:16
Hi,
ich hab soetwas selber mal gebraucht und mir dann eine eigene Methode gemacht, damit man auch Tastenkombinationen machen kann.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| procedure MyKeyEvent(Key: Byte; WaitForUp: Cardinal; DontUp, OnlyRelease: Boolean); begin if not OnlyRelease then begin KeyBd_Event(Key, 0, 0, 0); if not DontUp then begin Sleep(WaitForUp); KeyBd_Event(Key, 0, KEYEVENTF_KEYUP, 0); end; end else begin KeyBd_Event(Key, 0, KEYEVENTF_KEYUP, 0); end; end;
procedure TForm1.Button1Click(Sender: TObject); begin
MyKeyEvent(VK_LWIN, 0, True, False); Sleep(1); MyKeyEvent(Ord('R'), 0, False, False); Sleep(1); MyKeyEvent(VK_RETURN, 0, False, False); MyKeyEvent(VK_LWIN, 0, False, True); end; |
Vielleicht hilft das einem weiter. ;)
Paddii - Mo 16.10.06 16:55
Also ich hab jetzt damit mal nen bissl rumgespielt, aber ich weiß nicht wie ich einen Doppelpunkt hinbekomme.
In der Liste für die virtual keys steht was von wegen VK_OEM_1, aber ich weiß nicht, wie da zwischen ; und : hin und her schaltet.
Thx
Mordilion - Do 19.10.06 12:37
Wie wäre es anstelle des VIRTUAL_KEYS einfach Ord(':') zu verwenden?
Gruß
Mordi
Lannes - Do 19.10.06 19:48
Hallo,
Paddii hat folgendes geschrieben: |
In der Liste für die virtual keys steht was von wegen VK_OEM_1, aber ich weiß nicht, wie da zwischen ; und : hin und her schaltet. |
das bezieht sich auf eine US-Standard-Tastatur.
Zitat: |
Used for miscellaneous characters; it can vary by keyboard.
Windows 2000/XP: For the US standard keyboard, the ';:' key |
Für den Punkt findest du:
Zitat: |
VK_OEM_PERIOD (BE)
Windows 2000/XP: For any country/region, the '.' key |
dazu noch VK_Shift dann hast Du Deinen Doppelpunkt, im Code sieht es dann so aus:
Delphi-Quelltext
1: 2: 3: 4:
| Keybd_Event(VK_Shift,0,0,0); Keybd_Event($BE,0,0,0); Keybd_Event($BE,0,KEYEVENTF_KEYUP,0); Keybd_Event(VK_Shift,0,KEYEVENTF_KEYUP,0); |
KleinesProgramm - Do 20.03.08 09:42
kann mir jmd den quelltext mit dem MyKeyEvent schritt für schritt erklären?? *leicht schäm* ich steig da nicht mehr durch...
und mich würde auch interessieren ob mykeyevent iein object im form braucht... danke für eure antworteN!
KleinesProgramm - Fr 21.03.08 19:55
zu den VirtualKeys nochma:
diese liste
http://msdn2.microsoft.com/en-us/library/ms645540.aspx versteh ich nicht ganz, das beispiel mit shift hat gut funktionert aber wie kann cih ein a machen z.B?
als ich (0x41) eingefügt hab kam ne fehler meldung, das nicht "x41" sondern ")" erwartet/verlangt wird!
kann mir des einer erklären pls?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!