Child-Windows( spez. Buttos und EditBox ) von anderen Programmen ansprechen, wie ?
-
Hi ich habe mal ne Frage. Wie ist es möglich, Schaltflächen von anderen Programmen anzusprechen, zB. einen Button - sagen wir im WebBrowser "Aktualisieren". Muss ich da erst einmal die ID von diesen Button ermitteln?, oder gehts auch anders?
Der Sinn der sich hinter meiner Frage versteckt ist, dass ich mir eine Art Makro schreiben will, dass mir mit seiner Aktivierung ein Programm öffnet, dessen Schaltflächen betätigt, dann nach sagen wir 5min die Anwendung schliesst neu öffnet, dass selbe wieder tut ... bis man das Prog wieder bendet, also ne endlos schleife... gut ist dann auch noch, wenn dieses kleine tool selbstständig im hintergrunde läuft.
Wie dem auch sei, wie ist es möglich Schaltflächen von einer anderen Anwendung zu benutzen?
Für Hilfe schon mal danke!
Gruß Tobi!
-
Tobi zu Gast schrieb:
Muss ich da erst einmal die ID von diesen Button ermitteln?, oder gehts auch anders?
Naja, Du brauchst den Handle (HWND). Damit kannst Du dann Befehle an den Button weiterleiten. Allerdings ist das alles abhängig, vom verwendeteten 'Button'. Der Aktualisieren-Button im Browser ist beispielsweise in einer Toolbar eingelassen. Da kommt man nich so leicht ran. An dieser Stelle sei aber trotzdem die Funktion WindowFromPoint erwähnt. Manchmal hilfreich
.Tobi zu Gast schrieb:
Wie dem auch sei, wie ist es möglich Schaltflächen von einer anderen Anwendung zu benutzen?
Ja in den meisten Fällen schon.
-
hm ok ... also ich habe nicht vor einen button aus der tool bar anzusprechen, halt nen ganz normalen button.. wo "Start" drauf steht =).
vieleicht fangen ich mit meinen anforderungen erst mal etwas weiter unten an... wie mach ich des das ne anwendung ne andere startet, nach 10min beendet und dann gleich wieder erneut startet usw. ...
mach ich des mit HWND hWnd = FindWindow() ???
-
Hatten wir schon sehr oft, ... -> Forumsuche
.
-
ahso ok, dann glei weiter mit meiner frage...
ich habe nun also mit meiner anwendung die andere anwendung geöffnet. wie komm ich nun an die verschiedenen Button ran? also zB an den "Start"-Knopf ???PS.: unter was muss ich im forum hier suchen @anwendung aus einer anwendung öffnen???
-
FindWindowEx bzw. EnumChildWindows.
-
FindWindow() findet das Hauptfenster, mit FindWindowEx() kannst du dich dann durch seine Child-Fenster (=Dialog-Elemente etc.) durchhangeln.
-
alles klar, ich denk des bekomm ich hin... und wenn ich mir mit EnumChildWindow(); mir alles auf gelistet ist... such ich nur noch den richtigen button.. oder wie?
und mit den extern ein prog starten mach ich mit "ShellExecute" richtig?
wie kann ich dann eine anwendung exten beenden?
-
T0bi schrieb:
alles klar, ich denk des bekomm ich hin... und wenn ich mir mit EnumChildWindow(); mir alles auf gelistet ist... such ich nur noch den richtigen button.. oder wie?
Du musst ja nicht gleich alle aufzählen, sondern nur solange, bis Du den gefunden hast, den Du brauchst.
T0bi schrieb:
und mit den extern ein prog starten mach ich mit "ShellExecute" richtig?
wie kann ich dann eine anwendung exten beenden?Yep, siehe FAQ.
-
Du musst ja nicht gleich alle aufzählen, sondern nur solange, bis Du den gefunden hast, den Du brauchst.
ja ach ne so hab ich ja auch gemeint... doch ich muss doch trotzdem erst mal den richtig von allen finden oder nicht

kann ich mit ShellExecute eine Anwendung auch wieder beenden?
-
T0bi schrieb:
ja ach ne so hab ich ja auch gemeint... doch ich muss doch trotzdem erst mal den richtig von allen finden oder nicht

Ja klar, was denn sonst
.T0bi schrieb:
kann ich mit ShellExecute eine Anwendung auch wieder beenden?
Nein, alternativ siehe hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39369.html (FAQ!!!)
-
ich habe da nen prob. starte ich die anwendung via ShellExecute(); öffnet sich zwar das Prog, ABER es läuft nicht einwandfrei. manche Aktionen funktionieren nicht bei dem so aufgerufenen Prog. und beim start erscheinen auch gleich ien paar Errormessages. hmm also anscheind gehts so nicht. woran liegt das, gehts mit CreateProcess()) besser? und wenn ja wie funktioniert es mit CreateProcess() ?
-
Oha, könntest Du das vllt ein bisschen konkretisieren ?
-
hmm staht doch alles da ^^.
also wenn ich des tool was ich mit mein prog ja automatisch öffen will. mit der maus öffne(manuel) funktioniert das tool ohne probleme( keine Fehlermeldungen ). will ich es nun aber mit ShellExecute öffnen was ja auch geht, kommen fhelermeldungen die beschreiben, dass string-datein oder andere datein nicht richtig gelinkt werden konnten, oder so in dem dreh.. auf jedenfall funktioniert so das tool nicht ...
-
hi ich bins noch mal. also ich habe mein anderes kleines prob jetz hinbekomm es lag net an ShellExecute sondern am tool...
ich stelle mir nur gerade die frage wie ich mir die ChildWindos auflisten lassen kann, kann mir hier evtl. jemand nen beispiel code. Danke!Gruß Tobi!