Button wehrt sich

  • Button lässt sich einfach nicht drücken....

    Diese Angaben habe ich von WinInfo

    Spoiler anzeigen

    >>>> Window <<<<
    Title: Programm 2009
    Class: #32770
    Position: 168, 92
    Size: 816, 650
    Style: 0x94CA00CC
    ExStyle: 0x00010101
    Handle: 0x002C024E

    >>>> Control <<<<
    Class: Button
    Instance: 1
    ClassnameNN: Button1
    Advanced (Class): [CLASS:Button; INSTANCE:1]
    ID: 1
    Text: &Weiter >
    Position: 563, 579
    Size: 75, 23
    ControlClick Coords: 42, 12
    Style: 0x50010001
    ExStyle: 0x00000004
    Handle: 0x001802C4

    >>>> Mouse <<<<
    Position: 776, 712
    Cursor ID: 2
    Color: 0x000000

    >>>> StatusBar <<<<

    >>>> Visible Text <<<<
    <div><font style=font-family:Arial;font-size:14pt;font-weight:bold;color:0,0,0>Programm 2009<div><font style=font-size:10pt;font-weight:bold>Installationsassistent
    &Seriennummer*:
    000
    00000000
    &Vorname:
    Vorname
    &Nachname:
    Nachname
    &Unternehmen:
    Unternehmen
    <div style="position:absolute; top:5; left:5; width:220"><font style="font-family:Arial; font-size:10pt; font-weight:bold; color:92,92,92"> Informationen </font> <font style="font-family:Arial; font-size:8pt; color:42,42,42"><div style="position:relative; left:5; top:25; width:10"><img src="Images\Dot.gif"></div>
    <div style="position:relative; left:19; top:10; width:185">Die hier eingegeben Informationen sind permanent und stehen im Dialogfeld Info im Hilfemenü des Produkts zur Verfügung. </div>

    </font>

    </div>

    &Weiter >
    < &Zurück
    &Abbrechen
    <a>Dokumentation</a>
    <a>Unterstützung</a>
    <font style=font-family:Arial;font-size:12pt;font-weight:bold;color:92,92,92>Produkt- und Benutzerdaten
    *Falls Sie das Programm 2009 noch nicht erworben haben, geben Sie 000-00000000 als Seriennummer ein. Sie können es auch später erwerben.
    -


    >>>> Hidden Text <<<<

    Hier das Script an dieser Stelle:

    Spoiler anzeigen
    [autoit]


    $fenster_titel = "Programm 2009"
    $text_fenster5 = "Falls Sie das Programm 2009 noch nicht erworben haben, geben Sie 000-00000000 als Seriennummer ein."

    [/autoit] [autoit][/autoit] [autoit]

    WinWaitActive($fenster_titel, $text_fenster5)
    _LogToMain("Füntes Fenster...", $source)
    Sleep(1000)
    ControlSetText ($fenster_titel, $text_fenster5, "Edit1", $inhalt2)
    _LogToMain("Seriennummer Teil 1 eingegeben...", $source)
    Sleep(1000)
    ControlSetText ($fenster_titel, $text_fenster5, "Edit2", $inhalt3)
    _LogToMain("Seriennummer Teil 2 eingegeben...", $source)
    Sleep(1000)
    ControlSetText ($fenster_titel, $text_fenster5, "Edit3", $inhalt4)
    _LogToMain("Vorname eingegeben...", $source)
    Sleep(1000)
    ControlSetText ($fenster_titel, $text_fenster5, "Edit4", $inhalt5)
    _LogToMain("Nachname eingegeben...", $source)
    Sleep(1000)
    ControlSetText ($fenster_titel, $text_fenster5, "Edit5", $inhalt6)
    _LogToMain("Firma eingegeben...", $source)
    Sleep(2000)
    ControlClick ($fenster_titel, $text_fenster5, "Button1")
    ;Send("{LSHIFT}W")
    _LogToMain("Button1 geklickt.", $source)
    Sleep(1000)

    [/autoit]

    Alles klappt in diesem Script (bis dahin, weiter kann ich es ja nicht testen),... Namen und Firma wird eingegeben (was dafür spricht, dass Titel und Text vom Fenster richtig sind) aber Button1 wird nicht gedrückt. Als letzte Nachricht erhalte die Nachricht vom: _LogToMain("Button1 geklickt.", $source).
    Er scheint einfach den ControlKlick zu überspringen.

    Warum? Oder kann ich dank der Infos von WinInfo noch anders an den Button?

    3 Mal editiert, zuletzt von Xethria (31. Januar 2009 um 18:39)

  • ControlClick ($fenster_titel, $text_fenster5, "[CLASS:Button; INSTANCE:1]")

    und

    ControlClick ($fenster_titel, "&Weiter", "Button1") wollt er nicht.


    EDIT:
    is nicht wahr.. aber
    ControlClick ($fenster_titel, "&Weiter", "[CLASS:Button; INSTANCE:1]")
    hat ihm geschmeckt. Danke! :D

  • Jetzt versteh ich aber nur noch Bahnhof. Wieso klappt das jetzt und davor nicht?

    EDIT: Zitat aus der HIlfe:

    ControlClick ( "title", "text", controlID [, button [, clicks [, x [, y ]]]] )

    Parameter

    title: Der Titel des Fensters, auf das zugegriffen werden soll.
    text: Der Text des Fensters, auf das zugegriffen werden soll.
    controlID: Das zu beeinflussende Steuerelement. Siehe Controls.

    TEXT - AU3Info zeigt den Text an, den es aus einem Control liest. Für einen Button mit der Beschriftung Weiter, heißt es &Weiter - das & bedeutet dabei, dass der darauf folgende Buchstabe unterstrichen wird (Shortcut Alt + Buchstabe zum Auswählen). Dieser Text kann anstelle des "ClassNameNN" verwendet werden, um das Control zu identifizieren, wenn das erwünscht ist - aber mehrere Controls mit gleichem Text führen dann zu Problemen.

    ?( ich steh bestimmt wieder auf dem schlauch, dass ich jetzt verwirrt bin.

    2 Mal editiert, zuletzt von Xethria (29. Januar 2009 um 13:38)

  • ich hab das halt in der hilfe nachgelesen was man alles bei controlID eintragen darf, unter anderem eben auch den Text des Controls ;)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Ich werd noch irre. Erst schien alles zu klappen, nun fällt mir was auf...
    Es klappt nicht, also eigentlich doch. Ich hab jetzt 3-5 verschiedende Schreibweisen für den ControlClick ausprobiert (für diesen *piep* Button 1).
    Mir ist aufgefallen, dass der ControlClick nur richtig landet, wenn die Maus über diesem Button ist.Ich mache zich ControlClicks in diesem Script und dieser möchte den Mauszeiger drauf haben!? Ahhh! Bitte so helft mir doch, ich mag nicht dumm sterben.

    EDIT: alle COntrolClicks möchten den Zeiger über ihrem Kopf... wieso?
    Ich möcht jetzt aber nicht immer die Maus dahinbewegen, a) ist mir das zu unsicher, b) möchte ich später, wenn alles klappt, das Fenster verstecken. Da ist dann nicht mit Moves usw..

    Einmal editiert, zuletzt von Xethria (30. Januar 2009 um 15:06)

  • Hi ;),
    für ControlClick muss der Mauszeiger aber nicht über dem Button sein ... . Da machst du wohl irgendwas anderes falsch :P

    Um welches Programm geht es denn, dass du automatisieren willst?
    Ohne Quelltext lässt sich da auch nicht viel sagen, poste den mal :).

    anno2008

  • Quelltext ist der, der im ersten Beitrag steht. Das Programm heisst Inventor 2009.
    Bei den Befehlen:
    ControlClick ($fenster_titel, $text_fenster2, "&Weiter >")
    ControlClick ($fenster_titel, "&Weiter", "[CLASS:Button; INSTANCE:1]")
    ControlClick ($fenster_titel, "&Weiter >", "[CLASS:Button; INSTANCE:1]")
    Kommt der Klick an, wenn die Maus über dem Button ist.
    Ich höre den Windowssound, dass der Klick daneben ging, und im Programm seh ich, wie der Button sozusagen nur markiert wird (als würde man ihn mit Tab auswählen). Ich versteh das nicht.

    EDIT: Ich habe es mehrfach getestet, es ist wirklich definitiv so, dass der Button nur geklickt wird, wenn die Maus drüber ist. Ich versteh es auch nicht.
    EDIT2: Dieser Klick landet richtig, egal wo die Maus ist:

    ControlClick ($fenster_titel, $text_fenster1, "ListBox2")
    oder so
    ControlClick ($fenster_titel, $text_fenster1, "[CLASS:ListBox; INSTANCE:2]")
    oder so
    ControlClick ($fenster_titel, "", "[CLASS:ListBox; INSTANCE:2]")

    Wieso also nicht beim Button1?

    WinInfo dazu:

    Spoiler anzeigen

    >>>> Window <<<<
    Title: Programm 2009
    Class: #32770
    Position: 168, 92
    Size: 816, 650
    Style: 0x94CA00CC
    ExStyle: 0x00010101
    Handle: 0x002C024E

    >>>> Control <<<<
    Class: ListBox
    Instance: 2
    ClassnameNN: ListBox2
    Advanced (Class): [CLASS:ListBox; INSTANCE:2]
    ID: 1081
    Text:
    Position: 195, 226
    Size: 420, 81
    ControlClick Coords: 141, 34
    Style: 0x50010103
    ExStyle: 0x00000004
    Handle: 0x001F0332

    >>>> Mouse <<<<
    Position: 507, 381
    Cursor ID: 0
    Color: 0xFFFFFF

    >>>> StatusBar <<<<

    >>>> Visible Text <<<<
    <div><font style=font-family:Arial;font-size:14pt;font-weight:bold;color:0,0,0>Programm 2009<div><font style=font-size:10pt;font-weight:bold>
    <font style="font-family:Arial;"><a href="App://Readme"><div style="position:absolute; left:15; top:10;"><img src="rc://STRID_BMP_READ_DOC_PIC"/></div><div style="position:absolute; left:70; top:5;"><font style="font-weight:bold; color:92,92,92; font-size:18;text-decoration:underline;">D</font><font style="font-weight:bold; color:92,92,92; font-size:18;">okumentation lesen</font><br/><font style="color:black; font-size:9;">Readme-Datei, Installationshandbuch und sonstige wichtige Dokumentation lesen und drucken.</font></div><div style="position:absolute; left:390; top:5"></div></a></font>
    <font style="font-family:Arial;"><a href="App://Install"><div style="position:absolute; left:15; top:10;"><img src="rc://STRID_BMP_INSTALL_PIC"/></div><div style="position:absolute; left:70; top:5;"><font style="font-weight:bold; color:92,92,92; font-size:18;;text-decoration:underline;">P</font><font style="font-weight:bold; color:92,92,92; font-size:18;">rodukte installieren</font><br/><font style="color:black; font-size:9;">Standardinstallation auf dieser Arbeitsstation durchführen.</font></div><div style="position:absolute; left:390; top:5"></div></a></font>
    <font style="font-family:Arial;"><a href="App://Deploy"><div style="position:absolute; left:15; top:10;"><img src="rc://STRID_BMP_DEPLOY_PIC"/></div><div style="position:absolute; left:70; top:5;"><font style="font-weight:bold; color:92,92,92; font-size:18;;text-decoration:underline;">E</font><font style="font-weight:bold; color:92,92,92; font-size:18;">inrichtungen erstellen</font><br/><font style="color:black; font-size:9;">Vorkonfigurierte Einrichtungen zum Installieren von Produkten auf Client-Arbeitsstationen erstellen.</font></div><div style="position:absolute; left:390; top:5"></div></a></font>
    <font style="font-family:Arial;"><a href="App://InstallTools"><div style="position:absolute; left:15; top:10;"><img src="rc://STRID_BMP_INSTALL_TOOLS_PIC"/></div><div style="position:absolute; left:70; top:5;"><font style="font-weight:bold; color:92,92,92; font-size:18;"></font><font style="font-weight:bold; color:92,92,92; font-size:18;;text-decoration:underline;">W</font><font style="font-weight:bold; color:92,92,92; font-size:18;">erkzeuge und Dienstprogramme installieren</font><br/><font style="color:black; font-size:9;">Netzwerklizenzdienstprogramme, Administrations- und Berichtswerkzeuge installieren.</font></div><div style="position:absolute; left:390; top:5"></div></a></font>
    &Beenden


    >>>> Hidden Text <<<<

    EDIT3: ich ahne, dass mein komisches Problem so absurd klingt und ihr das Programm sicherlich nicht habt, um es nachzuvollziehen, dass ich mich wohl nur ärgern kann...

    7 Mal editiert, zuletzt von Xethria (30. Januar 2009 um 16:35)

  • Das Thema lässt mich jetzt nicht locker. Mir ist etwas aufgefallen.
    Als Erklärung zu meinem Script.
    ScriptA wird ausgeführt (eine GUI). Das ruft ScriptB auf wobei ScriptA sichtbar bleibt und Infos von ScriptB erhält (Editfeld wird gefüllt, wo das Geschehen protokolliert wird). ScriptB ruft dann das echte Installationsprogramm auf und sendet dann die Tastendrücke usw.
    Mir ist nun aufgefallen, dass der Button1 immer dann schief geht, wenn ich während ScriptB schon läuft, ScriptA verschoben habe (das Fenster, um das Editfenster besser zusehen, weil es immer verdeckt wurde). Die einzige Rettung, dass er noch richtig landet ist, wenn ich den Mauszeiger über den Button1 bewege.
    Natürlich habe ich das echte Installationsprogramm immer wieder in den Vordergrund geholt nachdem ich die GUI von ScriptA verschoben habe, weil ScriptB beim Fensterwechsel des echten Installationsprogramm darauf wartet und nur weiterläuft, wenns aktiv ist.
    Wenn ich die Maus seit dem urspünglichen Start von ScriptA nicht mehr bewege (also auch keine Fenster verschiebe) landen alle ControlClicks von ScriptB richtig, egal, wo die Maus gearde ist.

    Könnt ihr mir eine Erklärung geben, dass das richtig so ist, warum das so ist, oder ob ich jetzt total irre bin!? :wacko:

    EDIT: Okay, es scheint sich geklärt zu haben. Wenn das echte Installationsprogramm aufgerufen wird, scheint es irgendwas mit der Maus im Hintergrund zu machen. So zum Beispiel lässt es ja auch den Sanduhr-Mauszeiger erscheinen, aber nur, wenn die Maus über dem Fenster von dem Installationsprogramm ist. Und so habe ich nun eindeutig bemerkt, dass die COntrolClicks nur falsch laden, wenn die Maus irgendwo über dem Fenster von dem Installationsprogramm ist. DIe ganzen Klicks kamen richtig, wenn der Mauszeiger sich ausserhalb des Fensters befand....

    Darauf muss man erstmal kommen. Ich habe ja mehrere Controlclicks im Script und man kann es richtig beeinflussen und nachvollziehen, ob der Klick ankommt oder nicht:
    Mauszeiger rein ins Fenster - Mauszeiger raus.

    8|:rolleyes::D Und dafür habe ich jetzt 2 Tage gebraucht, um das herauszufinden.

    3 Mal editiert, zuletzt von Xethria (31. Januar 2009 um 18:36)