Delphi-PRAXiS

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.

Uncle Cracker 27. Mai 2004 23:07

Re: Anderes Programm komplett steuern
 
Also ich habe jetzt mal mit XSpy geguckt aber das hat mir nicht wirklich viel geholfen und eine genau ID konnte ich mit EDA oder so auch nicht finden, dass mir weiterhilft :(

Ich konnte jedoch die Position des Edits auf dem Formular herausfinden, hilft mir das irgendwie weiter?

Kennt vielleicht noch jemand eine andere Methode das Edit zufinden, indem man alle Edits auf dem Formular durchgeht oder so?


:love: Danke UC

Luckie 27. Mai 2004 23:14

Re: Anderes Programm komplett steuern
 
Was ist das für ein Proggramm? Kannst du es hier hochladen, damit man sich das direkt mal ankucken kann? Allerdings sollte das Prorgamm ein Setup benötigen, bin ich aus dem Rennen ;)

Cuchulainn 28. Mai 2004 06:54

Re: Anderes Programm komplett steuern
 
Ich arbeite im Moment an einem Programm, das auch ein anderes fernsteuert. Ich kann dir im Lauf des Tages einige Quelltextbeispiele schicken, wenn ich mehr Zeit habe. Beschreib mal bitte, was du genau machen möchtest.

Uncle Cracker 28. Mai 2004 15:40

Re: Anderes Programm komplett steuern
 
Also es ist das Programm PESpin, das ist ein Packer wie UPX, nur etwas besser.
Hier zu bekommen: http://wasm.ru/tools/8/pespin.zip (läuft ganz ohne Setup :zwinker: )

Ich möchte das Programm steuern, dass ich alles Vollautomatisch machen kann und nicht immer alles manuell konfigurieren muss, dass dauert bei vielen Dateien ziemlich lange.


@Cuchulainn Wäre nett, wenn du mir ein paar Beispiele schicken würdest bzw. hier posten könntest


:love: Danke UC

Motzi 29. Mai 2004 16:27

Re: Anderes Programm komplett steuern
 
Also ich hab mir das Prog mal kurz angeguckt und soweit ich das gesehn hab haben alle Controls eindeutige IDs oder eine eindeutige Kombination aus Classname und Caption...

Lad dir mal die neue Version meines X-Spy runter (gibts seit gestern), mit der kannst du dir dann den FindWindow-Code auch vollautomatisch erstellen lassen - entweder über Classname und/oder Caption oder die ControlID...

Uncle Cracker 30. Mai 2004 15:07

Re: Anderes Programm komplett steuern
 
Also ich habe das jetzt mal probiert mit X-Spy, ich habe auch die IDs usw. bekommen, doch irgendwie bekomme ich das mit dem setzten des Text nicht hin, obwohl es doch so hier gehen müsste:

Delphi-Quellcode:
var
  wnd: HWND;
  s: string;
begin
  wnd := FindWindow('#32770', 'PESpin v0.41');
  wnd := FindWindowEx(wnd, 0, 'Edit', 'have a little snack?'); //wnd := GetDlgItem(wnd, 11);
  if wnd <> 0 then
  begin
    s := 'Test';
    SendMessage(wnd, WM_SETTEXT, 0, Integer(@s[1]));
  end;
end;
Was mache ich denn falsch? Vielleicht kann mir nochmal jemand helfen.


:love: Danke UC


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:14 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