Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Anderes Programm komplett steuern (https://www.delphipraxis.net/22863-anderes-programm-komplett-steuern.html)

Uncle Cracker 25. Mai 2004 12:13


Anderes Programm komplett steuern
 
Wie kann ich ein anderes Programm mit Delphi komplett steuern, also z.B. Edit ausfüllen, Button klicken, Checkbox "checken" usw. ?

Ich habe zwar schon was gefunden, dass das über SendMessage gehen soll, aber irgendwie bekomme ich das nicht hin, da wird anstatt des Editfelds die Caption ausgefüllt :(
Mit SendDlgItemMessage habe ich es auch schon versucht, aber da hat irgendwie gar nix gefunzt :(

Vielleicht hat das schonmal jemand gemacht und kann mir helfen.


:love: Danke UC

Luckie 25. Mai 2004 12:17

Re: Anderes Programm komplett steuern
 
Zitat:

Zitat von Uncle Cracker
dass das über SendMessage gehen soll, aber irgendwie bekomme ich das nicht hin, da wird anstatt des Editfelds die Caption ausgefüllt :(

Dann hast du wohl das Handle des Fensters angegeben anstatt des Edits. Ist doch ziemlich offensichtlich, was da schief gelaufen ist oder? :roll:

Uncle Cracker 25. Mai 2004 12:52

Re: Anderes Programm komplett steuern
 
Wie kann ich nun die Handles auf die einzelnen Controls bekommen? Mit Findwindow wird es ja nicht komplett funktionieren.

:love: Danke UC

Luckie 25. Mai 2004 12:55

Re: Anderes Programm komplett steuern
 
Hier im Forum suchenEnumChildWindows, Hier im Forum suchenFindWindowEx, ...

Uncle Cracker 25. Mai 2004 22:16

Re: Anderes Programm komplett steuern
 
Also ich habe das jetzt folgendermaßen hinbekommen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  hMemo, hHandleDesFensters : HWND;
  s: string;
begin
  hHandleDesFensters := FindWindow(nil, 'ReCrackS.de');
  hMemo:= FindWindowEx(hHandleDesFensters, 0, 'Edit', nil);
  s := 'Test';
  SendMessage(hMemo, WM_SETTEXT, 0, Integer(@s[1]));
  hMemo:= FindWindowEx(hHandleDesFensters, 0, 'Button', nil);
  SendMessage(hMemo, BM_CLICK, 0, Integer(@s[1]));
end;
Funktioniert auch super, doch leider nur, wenn es ein Button und ein Edit gibt, bei mehreren passiert überhaupt nichts :(

Mit dem Button habe ich es hinbekommen, da suche ich nach der Buttoncaption, doch mit dem Edit klappt es nicht. Wie kann ich die suche nach einem Handle noch spezialisieren?
In dem einem Edit steht etwas drin, also könnte man danach suchen (wie weiß ich nicht), aber die andere ist komplett leer.

Könnte mir vielleicht nochmal jemand helfen und mir zeigen wie ich es machen könnte?


:love: Danke UC

Christian Seehase 25. Mai 2004 22:20

Re: Anderes Programm komplett steuern
 
Moin UC,

Du hast doch schon WM_SETTEXT gefunden. Es gibt auch WM_GETTEXT ;-)

Ausserdem haben die Controls i.d.R. auch immer eine ID mit der sie eindeutig identifizierbar sind.

Uncle Cracker 25. Mai 2004 22:44

Re: Anderes Programm komplett steuern
 
Mhhhhh, aber irgendwie hilft mir das nicht sonderlich weiter, habe es auch schon versucht.
Mit EDA hat das eingeben keine Probleme gemacht, aber da habe ich ja schon vorher angeben wo was eingetragen werden soll.

Motzi 26. Mai 2004 08:48

Re: Anderes Programm komplett steuern
 
Vielleicht hilft dir auch mein X-Spy weiter.. in der neuen Version (die in ein paar Tagen kommen sollte) kann man sich auch automatisch den FindWindow-Code für ein beliebiges Fenster generieren lassen... 8)

Luckie 26. Mai 2004 14:28

Re: Anderes Programm komplett steuern
 
Zitat:

Zitat von Christian Seehase
Ausserdem haben die Controls i.d.R. auch immer eine ID mit der sie eindeutig identifizierbar sind.

Das gilt aber nicht für Delphi mit der VCL erstellten Programmen. Da wird die ID von WinControls aus dem Händle generiert und ist somit auch nicht eindeutig.

Christian Seehase 26. Mai 2004 20:16

Re: Anderes Programm komplett steuern
 
Moin Luckie,

stimmt.
Aber zur Not tut's ja auch die Position eines Controls relativ zum Formular.
Je nachdem wie das Formular aufgebaut ist, könnte man damit eine Zuordnung treffen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 Uhr.
Seite 1 von 2  1 2      

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