Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Tastaturdruck Emulieren (https://www.delphipraxis.net/9202-tastaturdruck-emulieren.html)

Pseudemys Nelsoni 21. Sep 2003 05:39

Re: Tastaturdruck Emulieren
 
hoi luckie,

ne, vieleicht habe ich mich eben falsch ausgedrückt, es soll ein tastaturdruck simuliert werden,...sagen wir einfach mal das ein <A> in die "luft" geschrieben wird

Luckie 21. Sep 2003 05:42

Re: Tastaturdruck Emulieren
 
Du kannst nichts in die "Luft" schreiben. Irgendwo muß es ja landen, sonst kannst du dir das gleich sparen. BTW was ist für dich Luft?

Pseudemys Nelsoni 21. Sep 2003 06:36

Re: Tastaturdruck Emulieren
 
sagen wir mal ich schreibe einfach ein "A"(als beispiel) in einem IE Fenster, dawürde ja nichts passieren, da ja kein schreibfeld etc da ist, aber das Programm das ich habe loggt den geschriebenen buchstaben (also als tastendruck). Ich möchte das mein programm, wenn ich button1 anklicke, ein "A" schreibt, ein Ziel gibt es eigentlich nicht, nur das andere Programm muss diesen registrieren

Christian Seehase 21. Sep 2003 14:40

Re: Tastaturdruck Emulieren
 
Moin Silent,

wenn Du nicht das Handle hast, an das Du die Taste schicken willst, musst Du es mit keybd_event machen.
Dabei stehst Du mit Deiner Umsetzung allerdings vor einem Problem:
keybd_event wirkt sich auf das Fenster aus, das den Tastaturfokus hat, was automatisch Deines ist, wenn Du dabei einen Button anklickst.

Nimm mal einen Button und einen Timer und mach mal das Notepad auf.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  keybd_event(VK_SHIFT,0,0,0);
  keybd_event(ord('A'),0,0,0);
  keybd_event(ord('A'),0,KEYEVENTF_KEYUP,0);
  keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Button1Click(nil);
end;
Als erstes startest Du Dein Programm mal mit Timer1.Enabled := false, wechselst auf das Notepad, und klickst dann den Button in Deinem Formular an. Im Notepad rührt sich nichts.
Jetzt noch einmal das gleiche mit aktiviertem Timer.
Es werden im Sekundenabstand A in das Notepad geschrieben.

Im ersten Fall hat der Button den Tastaturfokus, und erhält das A, darum klappt es nicht.

Pseudemys Nelsoni 21. Sep 2003 17:01

Re: Tastaturdruck Emulieren
 
hoi Christian,

danke für den Code, der funzt einwandfrei :)
Das Programm loggt den zwar nicht (muss wohl irgendwie ein schutz sein :(). Aber wenigstens weiss ich wie es überhaupt geht keys zu senden 8)

Tyrael Y. 23. Sep 2003 17:05

Re: Tastaturdruck Emulieren
 
nochmal vielleicht zur Verdeutlichung, da mir der Christian in dme anderem Thread geholfen hatte



SendMessage(Handle,WM_KEYDOWN,VK_DOWN,0);

Handle : Handle zur Komponente/Fenster in der Tastendruck simuliert werden soll

WM_KEYDOWN: bedeutet simuliere einen keydown-Ereignis
(bei WM_KEYUP wird halt ein keyup-Ereignis simuliert)

VK_DOWN: <-- der Tastendruck der ausgelöst werden soll (VK_DOWN = Richtungstaste nach oben, hier kann man alle möglichen virtuellen Tasten angeben, also auch z.B. VK_RETURN, VK_ESCAPE...usw.)


so dass sollte jetzt zum Verständnis für jeden reichen...

... hat ja auch für mich gereicht :lol:

SirThornberry 23. Sep 2003 17:13

Re: Tastaturdruck Emulieren
 
Keybd_Event(VK_RETURN, 0, 0, 0); //key down
Keybd_Event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); //key up

Pseudemys Nelsoni 16. Jan 2004 13:58

Re: Tastaturdruck Emulieren
 
hoi,

ich habe immernoch das problem...also der simulierte tastendruck funktioniert zwar, aber das prog das diese keys loggt, loggt diesen nicht mit bzw zählt ihn nicht..gibt es nich noch ne andere möglichkeit?

also mit :

Delphi-Quellcode:
Keybd_Event(VK_RETURN, 0, 0, 0); //key down
Keybd_Event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); //key up
loggt das prog (nicht meins) diesen key nicht


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 Uhr.
Seite 3 von 3     123   

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 by Thomas Breitkreuz