ControlClick funzt bei Adobe Reader X Installation nicht

  • Hallo zusammen...
    Hab mir schon `nen Wolf gesucht und komme irgendwie nicht so richtig weiter...
    Leider reichen meine Kenntnisse auch nicht aus, um mit der Hilfe so wirklich weiterzukommen...

    Problem: Ich beabsichtige eine Exe-Datei zu erstellen mit der ich mehrere Programme nacheinander ohne Usereingriff installieren kann.
    Ich hab das vor ein - zwei Jahren unter XP auch schon Mal hinbekommen, nur hier scheint grad alles anders zu sein ( Windows7 Pro ) :D
    Nu gehts los, schon bei der ersten Software ( AdobeReaderX ) wird der olle Installation-Button nicht gedrückt :wacko:
    Hier Mal der Code:

    Code
    ShellExecute("Software\AdbeRdr1011_de_DE.exe")
    WinWaitActive("Adobe Reader X (10.1.1) - Assistent","Bereit zur Installation Adobe Reader X (10.1.1)")
    ControlClick("Adobe Reader X (10.1.1) - Assistent","Bereit zur Installation Adobe Reader X (10.1.1)","Button1")

    Hab`ich Tomaten auf den Augen das ich was übersehe ??
    SyntaxCheck Prod sacht alles i.O.
    Fehlermeldung bekomme ich keine, Steht nur: Exit code: 0 Time: 13.927

    Habt Ihr vielleicht `ne Idee wo der Hase im Pfeffer liegt ?
    Wäre toll :D

    Danke schon Mal im Vorraus :!:

    Der Mike

    Einmal editiert, zuletzt von Mike280399 (19. September 2011 um 12:20)

  • Morgen, erkennt er das Fenster richtig?, das würde ich erst mal testen

    [autoit]

    If WinWaitActive .. = True Then
    Msgbox(2,"","Fenster erkannt"
    Endif

    [/autoit]

    und sollte das gehen, kann es ja sein dass das Control Click nicht geht dann Fenster Position ermitteln somit weißt du wo der Button sein muss und dann mit MOuseClick x,y pos so würde ich es machen :)

    Gruß Marvin

  • Hi Marvin,

    danke für die schnelle Antwort..
    Messagebox funktioniert, bzw. Zeigt mir "Fenster Erkannt" an..
    Nun drängt sich mir die Frage auf wie das mit der Fensterposition funzt... ist das irgendwie... laienhaft gefragt... Monitorgrössenabhängig ?
    Die Exe soll ja später auf X-Beliebigen Rechnern zur Anwendung kommen...
    Fragen über Fragen :S

    Danke für die Unterstützung :)

  • [autoit]

    $aPosition = WinGetPos ("Adobe Reader X (10.1.1) - Assistent") ; Gibt ein Array mit X- und Y-Koordinaten der linken oberen Ecke des Fensters zurück.
    ;MouseClick ("left", $aPosition[0], $aPosition[1], 1, 0) Hier musst du zu den Koordinaten noch Relativen addieren.

    [/autoit]

    Das würde eigentlich immer klappen, außer, wenn sich der Button nicht mehr im Bild befindet...
    So was ist aber extrem unwahrscheinlich, wenn der User nicht selbst eingreift und das Fenster verschiebt.
    Zusätzlich kannst du noch

    [autoit]

    WinMove

    [/autoit]

    verwenden, um das ganz abzusichern... ;)

    MfG

  • Yay, werde ich gleich Mal testen, vielen Dank ! :)

    #Edit: Hab`s versucht -> Scheck`ich net ;(

    Wie funktioniert das mit Relativen zu den Koordinaten addieren ?

    Sieht atm so aus:

    Code
    ShellExecute("Software\AdbeRdr1011_de_DE.exe")
    WinWaitActive("Adobe Reader X (10.1.1) - Assistent","Bereit zur Installation Adobe Reader X (10.1.1)")
    $aPosition = WinGetPos ("Adobe Reader X (10.1.1) - Assistent")
    MouseClick ("left", $aPosition[0] 300, $aPosition[1] 324, 1, 0)

    Die Position, an der der Knopf gedrückt werden soll ist also $aPosition[0]+300 und $aPosition[1]+324 wenn ich das richtig verstehe...
    Das hab ich mir aus der Hilfe gepult:

    $array[0] = X position
    $array[1] = Y position

    In Autoit v3 Window Info steht: Position 300, 324 :wacko:


    Einmal für doofe bitte :S

    3 Mal editiert, zuletzt von Mike280399 (16. September 2011 um 14:54)

  • [autoit]

    $aPos = WinGetPos ("Adobe Reader X (10.1.1) - Assistent")

    [/autoit]
    Zitat von Return Value

    Success: Returns a 4-element array containing the following information:
    $array[0] = X position
    $array[1] = Y position
    $array[2] = Width
    $array[3] = Height

    Davon brauchst du $aPos[0] (X-Koordinaten) und $aPos[1] (Y-Koordinaten).
    Du hast also die Koordinaten von der linken oberen Ecke des Fensters.
    Nun musst du nur noch so viel Pixel zu X und Y addieren, das du auf den Button kommst...
    Beispiel:
    [Blockierte Grafik: http://img690.imageshack.us/img690/6144/beispielmouseclick.png]
    Um hier den Button anzuklicken, müsste der Code nun so aussehen:

    [autoit]

    $aPos = WinGetPos ("Adobe Reader")
    MouseClick ("left", $aPos[0] + 289, $aPos[1] + 145, 1, 0)

    [/autoit]

    Verstehst du...?
    Du bekommst die Position von der Ecke und musst dich dann nach rechts-unten arbeiten. :P

    €: Den Titel hab ich mal ein Bisschen gekürzt...

    MfG

  • Code

    Aah, geschnallt soweit...
    Was mich nu noch ein wenig irritiert ist die Tatsache das ich nicht genau weiss wie viel ich nu genau draufrechnen muss ;(

    [Blockierte Grafik: http://mm-edv.eu/AutoIT/autoitwindowinfo.jpg]

    Wenn ich das richtig deute, gibt mir Position die Position des Contol-Elements im Aktiven Fenster an und Size die größe oder ?

    Was hats dann mit den ControlClick Coords auf sich ?(

    Sorry wenn`s grad ein wenig arg verpeilt rüberkommt, aber ich steh`im Moment echt total auf der Leitung :S

    Hier noch Mal der Code mit den Einträgen aus Dem Window Info-Dingens:

    Code
    $aPos = WinGetPos ("Adobe Reader X (10.1.1) - Assistent") 
    MouseClick ("left", $aPos[0] + 340, $aPos[1] + 335, 1, 0)

    Mit `ner Messagebox hab ich herausgefunden das WinGetPos=; 708, 334 ist.. das wird ja durch $aPos ersetzt, so dass ich wieder bei Null anfange richtig ?

    Habe Position und ControlClick Coords zusammengerechnet... ist das falsch ?

    Args!

    Danke für Eure Geduld :S

  • Der Punkt "Position" zeigt die Koordinaten relativ zur linken oberen Ecke an... Glaube ich.

    [autoit]

    MouseClick ("left", $aPos[0] + 300, $aPos[1] + 324, 1, 0)

    [/autoit]

    So müsste es sein... Glaube ich. :P
    Probier es einfach mal aus... Wirst schon sehen, wo er klickt.

    MfG

  • Huhu, funzt leider nicht... mir fällt grad ein... iwo konnte man doch einstellen das einfach "ENTER" gedrückt wird oder ?(

    #Edit: Send{Enter} funzt jedenfalls nicht 8|
    #Edit: Sogar Send("{TAB}") funzt nicht ... hab das Gefühl, das a.) Beim Adobe Reader x irgendwas die automatisierte Installation nicht zulässt ( Ja, kann ich mir eigentlich auch nicht vorstellen ) oder das b.) Windows 7 iwie `n Riegel vorschiebt... Teste jetzt Mal eine andere Exe-Datei...
    #Edit: Urgs! auch mit anderen Programmen klappt das nicht wirklich 8|

    Hab ich `ne falsche Autoit-Version ?
    Ich schau Mal :cursing:

    2 Mal editiert, zuletzt von Mike280399 (16. September 2011 um 17:58)

  • Ich habe für alle Adobe Produkte die Setups mit Autoit so automatisiert, dass einfach mit Send() durch das Setup navigiert wird. Da brauchst nicht lange mit Mauskoordinaten usw. rumzuhantieren.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Werds noch Mal in Ruhe versuchen... witzigerweise bekomme ich eine Fehlermeldung wenn ich Autoit neu installieren will...
    Morgääähn gehts weiter... :sleeping:

    Danke für eure Antworten :)

    #EDIT: Habe nu die allerneuste Version von Autoit druff...
    Funktioniert leider noch immer nicht... weder mit ControlClick, noch mit Koordinaten, noch mit Send :cursing:
    Irgend etwas übersehe ich doch 8| Nur was ?(
    Werde noch Mal alles der Reihe nach durchtesten....

    Einmal editiert, zuletzt von Mike280399 (19. September 2011 um 07:31)

  • Hallo zusammen.. scheint irgendwie mit Windows7 Pro 64 BIT zusammenzuhängen.
    Auch eine AVIRA-Installation lässt sich nicht automatisieren...
    Die Programme werden gestartet, aber es werden keine Knöppe gedrückt...

    Hat evtl. einer von euch eine Idee wo in Windows7 Einstellungen vorgenommen werden können die das "Erlauben" bzw. "Verbieten" von Installationen durch Skripte betreffen ?

    Wäre toll....

    Mike

  • Mal so eine Blöde Frage
    hab mir gerade zum testen den Reader X Hier geladen.
    "installation + Download vollautomatisch.." wofür dann noch ein Script?? :/

    Gruß Marvin

  • Ziel ist eine Exe-Datei auf einem von mir erstellten Datenträger, den ich in einen Rechner packe, per Autostart die Exe starten lasse und wo der Rechner neu startet wenn alle ( 9 ) Programme installiert sind.
    Quasi unattended-softwareinstallation von CD/DVD :)

    Für Windows XP hab ich das Ding noch, allerdings mit veralteten Softwareversionen...

  • na dann solltest du uns mal die Exe geben weil ich habs eben versucht und habe nur diesen Installer bekommen^^ der sich vollautomatisch installiert

    EDIT: Exe geladen nachher kümmer ich mich um das Script :)

    Einmal editiert, zuletzt von Protex (19. September 2011 um 09:30)

  • Sooo also das Script hier läuft bei mir einwandfrei druch :)

    Spoiler anzeigen
    [autoit]

    $inst = 0
    HotKeySet("{F1}","_instabr")

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

    While $inst = 0
    Sleep(100)
    WEnd

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

    Func _instabr()
    $inst = 1
    ;BlockInput(1)
    ShellExecute("AdbeRdr1011_de_DE.exe")
    Sleep(300)
    WinWaitActive("Adobe Reader X (10.1.1) - Assistent","Bereit zur Installation Adobe Reader X (10.1.1)")
    Send("{TAB}")
    Sleep(300)
    Send("{TAB}")
    Sleep(300)
    Send("{TAB}")
    Sleep(300)
    Send("{ENTER}")
    WinWaitActive("Adobe Reader X (10.1.1) - Assistent","Installation abgeschlossen")
    Send("{ENTER}")
    MsgBox(2,"Adobe Reader X","Reader X (10.1.1) , Installation abgeschlossen")

    EndFunc

    [/autoit]

    dass einzigste was du eventuell noch abfangen musst ist die Sicherheitswarnung von Win7 von wegen EXE wirklich ausführen etc..

    Gruß Marvin

  • Hi Marvin, nu kommts :D

    Funktioniert, auf jeden Fall habe ich eine Meldung bekommen ob ich die vorhandene Installation ändern will.
    Nachdem ich dann die Vorhandene Installtion runtergeschmissen habe und es noch Mal versuchte, hing die olle Exe wieder beim "Installieren"-Button.... :cursing:

    Dein Script funktioniert anscheinend einwandfrei, da liegts anscheinend tatsächlich an meiner Kiste 8|
    #EDIT: Auch neustart des Rechners hat nix geändert...

    Vielen Dank soweit....

    Grüße
    Der Mike
    #EDIT2: Urgs! :thumbup:

    Au Backe! Nich hauen jetzt :S

    Code
    ShellExecute("AdbeRdr1011_de_DE.exe")
    Sleep(300)
    WinWaitActive("Adobe Reader X (10.1.1) - Assistent","Bereit zur Installation Adobe Reader X (10.1.1)")
    ControlClick("Adobe Reader X (10.1.1) - Assistent","Bereit zur Installation","Button1")

    Exe gebastelt und als Administrator ausgeführt... Funzt!
    Was`n Scheiss 8|

    Benutzerkontensteuerung is Schuld :D

    Danke für die Hilfe :thumbup:

    Mike

    4 Mal editiert, zuletzt von Mike280399 (19. September 2011 um 12:19)