![]() |
Re: das gedückthalten einer taste simulieren
öhm, wollte ma fragen ob noch jmd ne idee hat, weil das ganze hier anscheinend ins stoppen geraten ist.
MfG - ghost |
Re: das gedückthalten einer taste simulieren
AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH H I L F E bitte bitte bitte helft mir
MfG - Ghost |
Re: das gedückthalten einer taste simulieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hi @all,
wie versprochen kommt hier eine kleine DemoApplication wo unter anderem das mit dem Tastatur ereignissen gezeigt wird. Ich hab den Quelltext eigentlich aussagekräftig mit Komentaren versehen.. Compiliert und erstellt mit Turbo Delphi Explorer :zwinker: es liegt auch die Fertige Exe mit im Zip archive. Dieses ist Selbstentpackend damit aufjedenfall jeder an die daten ran kommt... Falls ihr Fragen dazu habt schreibt mir ne pm oder halt hier rein. Noch kurz zu bedinung des Programms: es arbeitet hauptsächlich mit einem SystemTrayIcon. Über das PopUpMenü dieses kann man eigentlich alles was es gibt (is ja nich viel) steuern. Also es ist wirklich nur ganz klein. Wenn man in Edit2 einen Text eingibt und dann im TrayiconPopup den Punkt Key-Go! auswählt wird der Darin enthaltene Text original getreu (also mit Klein/Großschreibung) als Keybord messages ins ausgegeben.. Sonderzeichen (auser ' ') gehen allerdings nicht! Bin über eure Meinung gespannt :-D Leuchtende Grüße Stefan |
Re: das gedückthalten einer taste simulieren
-.- das is aber irgendwie nich die antwort auf meine frage, weil man damit auch nicht das >>gedrückthalten<< einer taste simulieren kann
MfG - Ghost |
Re: das gedückthalten einer taste simulieren
Also, das ist im Prinzip ganz einfach.
Mit
Delphi-Quellcode:
wird z.B. die Taste 'A' solange gedrückt (gehalten) bis man
Keybd_Event(Ord('A'),0,0,0); // entspricht dem KeyDown
Delphi-Quellcode:
aufruft. Will man z.B. Shift und A drücken, ruft man nacheinander auf
Keybd_Event(Ord('A'),0,KEYEVENTF_KEYUP,0); // entspricht dem KeyUp
Delphi-Quellcode:
und "läßt diese dann irgendwann wieder los" durch
Keybd_Event(VK_SHIFT,0,0,0);
Keybd_Event(Ord('A'),0,0,0);
Delphi-Quellcode:
Keybd_Event(Ord('A'),0,KEYEVENTF_KEYUP,0);
Keybd_Event(VK_SHIFT,0,KEYEVENTF_KEYUP,0); Grüsse ...Doc |
Re: das gedückthalten einer taste simulieren
hi,
das is ja das problem dieser befehl hier:
Delphi-Quellcode:
beinahltet anscheinent das loslassen schon.
Keybd_Event(Ord('A'),0,0,0);
MfG - Ghost |
Re: das gedückthalten einer taste simulieren
Moin,
ich habe das gerade mal getestet... Durch den Befehl wird KeyDown und KeyPress ausgelöst (kein KeyUp, die Taste bleibt also gedrückt). Im Gegensatz zur echten Tastatur wird das KeyPress Ereignis, was z.B. für die Darstellung der Zeichen in visuellen Komponenten zuständig ist nur 1x ausgelöst. Es kommt jetzt darauf an, was Du machen möchtest. Prüft die Anwendung, die Du steuern möchtest den KeyDown oder den KeyPress Event? Möchtest Du den KeyPress mehrfach ausführen, geht das z.B. so:
Delphi-Quellcode:
Allerdings entspricht dies dann nicht dem "Gedrückthalten" sondern dem hundertmaligen Drücken und Loslassen der Taste.
for i:=1 to 100 do // = 100x KeyDown/Press/Up
begin Keybd_Event(Ord('A'),0,0,0); // entspricht dem KeyDown + 1x KeyPress Keybd_Event(Ord('A'),0,KEYEVENTF_KEYUP,0); // entspricht dem KeyUp sleep(10); // wenn eine kurze Pause gewünscht end; Grüsse ...Doc |
Re: das gedückthalten einer taste simulieren
Hallo,
nimm doch den Vorschlag von Neutral General ![]()
Delphi-Quellcode:
Keybd_Event für KeyUp ist IMHO nicht erforderlich.
var
Form1: TForm1; BooleanVariable : Boolean; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin BooleanVariable := False; Edit1.setfocus; repeat Keybd_Event(Ord('A'),0,0,0); sleep(50); Application.Processmessages; until BooleanVariable; end; procedure TForm1.Button2Click(Sender: TObject); begin BooleanVariable := True; end; |
Re: das gedückthalten einer taste simulieren
Stimmt, das Key Up kann weggelassen werden. Allerdings wird dann trotzdem jeweils KeyDown und KeyPress (anstatt nur KeyPress) aufgerufen. Zum Schluss dann das KeyUp nicht vergessen.
Und ein Sleep (oder sonstige Verzögerung) ist zwingend erforderlich! Gerade noch einmal probiert... Grüsse ...Doc |
Re: das gedückthalten einer taste simulieren
hallo,
danke für eure antworten, ich glaube so wie es lannes geschreiben hat, könnte es funktionieren. Nun habe ich aber folgendes problem, wohin wird das keyevent gesendet? nicht an die application mit dem fokus? MfG - Ghost |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz