Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Tastendruck simulieren (https://www.delphipraxis.net/20613-tastendruck-simulieren.html)

vlees91 20. Apr 2004 14:40


Tastendruck simulieren
 
Hallo,

weiß jemand, wie man mit Delphi 6 eine Taste simuliert, aber diese soll von einem inaktiven(!!!), nicht zu meinem Projekt gehörenden, Prog erkannt werden. Z.B.: Ich drücke Z und an Notepad wird ein B geschickt.

Ich habe einen Quellcode von Ensacom.de, der aber einen Fehler verursacht:

Delphi-Quellcode:
//Zuerst ermittelt man das Fensterhandle mit folgender Anweisung:

  FindWindow((Fensterklasse,wenn bekannt),Fenstertitel).

//Anschließend holt man das Fenster mit

  SetForegroundWindow(Fensterhandle)nach vorn. //Dies ist jedoch nicht notwendig.

{
Nun kann man mit keybd_event eine Tastenkombination an das Fenster schicken.
Wenn man mit FindWindowEx(ParentHandle, nil,nil,nil) rekursiv die entfernte
Anwendung
nach dem gewünschten Button durchsuchen lässt, kann man hinterher folgende
Messages senden:
}

  PostMessage(Handle.Kind,WM_LBUTTONDOWN,MK_LBUTTON,0);
  PostMessage(Handle.Kind,WM_LBUTTONUP,0,0);

//Und schon wird der Button gedrückt.
Allerdings meint Delphi, dass (bei den beiden "PostMessage-Zeilen") Handle.Kind falsch ist.
:wiejetzt:

Tschüss
der auf Antwort wartende Jasper

Luckie 20. Apr 2004 14:45

Re: Tastendruck simulieren
 
Da muss das Handle des Kontrolls hin an das du die Nachricht schicken willst.

Neuni 20. Apr 2004 14:49

Re: Tastendruck simulieren
 
Einfach "eine Taste drücken" simulieren kann man mit den SRUtils ganz gut, allerdings dann nicht an eine andere Anwendung, sondern an das aktive Fenster.

Evian 20. Apr 2004 14:58

Re: Tastendruck simulieren
 
Also entweder so: das Drücken von Tastatur Tasten simulieren
Oder Du machst es mit sendkeys, wie hier beschrieben: Delphi Praxis

gruß

Evian

vlees91 20. Apr 2004 15:30

Re: Tastendruck simulieren
 
Zitat:

Zitat von Luckie
Da muss das Handle des Kontrolls hin an das du die Nachricht schicken willst.

Also die Ausgabe von FindWindow.

PS: Bei FindWindow muss ja der Fenstertitel angegeben werden, ist das beim Editor zum Beispiel "Neu Textdokument.txt - Editor"?

vlees91 20. Apr 2004 16:07

Re: Tastendruck simulieren
 
Ich habe das jetzt ausprobiert, er findet das Fenster auch, aber wie kann ich einen Klick auf einer bestimmten Stelle anwenden und wie kann ich Buchstaben zum Beispiel in Notepad schreiben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz