Kann Fenester nicht auswählen bzw. schließen

  • Ich möchte ein MSI Paket per Paketverteilung ausrollen.
    Nur leider kommt am Ende ein Popupfenster mit einer Zusammenfassung von den Treibereinstellungen. Auch wenn ich msiexec mit /quiet oder /passive und /qn ausführe kommt dieses Fenster und will manuell bestätigt werden.

    Auch mit Auto-It bekomme ich es nicht geschlossen. Deswegen hoffe ich das ihr mir bei meinem Problem weiterhelfen könnt.

    so rufe ich das MSI-Paket auf:

    [autoit]

    Run('msiexec /i "C:\Users\bla\Desktop\VPCX Setup\Virtual_PCX_Runtime_v3.42i_x64.msi" /qb-! ALLUSERS=1 REBOOT=ReallySuppress')

    [/autoit]


    Folgendes habe ich versucht um das Fenster zu schließen:

    [autoit]

    _WinWaitActivate("Digigram Drivers","")
    ControlClick("Digigram Drivers","","Button1","left")

    [/autoit]


    oder

    [autoit]

    sleep(10000)
    send("{ENTER}")

    [/autoit]

    Bei beiden Varianten passiert einfach garnichts... Wenn ich dann selber Enter drücke verschwindet das Fenster.

    Falls es hilft hier zwei Screens: Screen1 // Screen2

    Einmal editiert, zuletzt von runamoK (23. April 2013 um 12:10)

  • Hi,
    ich verwende bei AutoIt Window Info grundsätzlich den Reiter "Summary" um daraus die Parameter für bspw. den ControlSend()-Befehl herauszukopieren.
    Bsp:

    Spoiler anzeigen
    [autoit]


    opt ("WinTitleMatchMode",2) ;erkennt Teile des Titels
    opt ("MouseCoordMode",2) ;relative Koordinaten zum aktiven Fenster
    WinActivate("Expicula -") ;Fenster aktivieren

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

    ControlClick("Expicula -","","[CLASS:ToolbarWindow32; INSTANCE:11]","left",1,60,12)

    [/autoit]
  • Danke für den Tipp, leider kann ich es erst am Montag ausprobieren.
    Nur noch kurz zum besseren Verständnis:

    [autoit]

    ControlClick("Expicula -","","[CLASS:ToolbarWindow32; INSTANCE:11]","left",1,60,12)

    [/autoit]


    60,12 sind in deinem Beispiel die "ControlClick Coords"? Was macht die "1"?
    Durch das Aktivieren der relative Koordinaten zum aktiven Fenster" macht es auch nichts wenn sich die Bildschirmauflösung ändert?

  • Zitat

    60,12 sind in deinem Beispiel die "ControlClick Coords"? Was macht die "1"?

    Dieser Parameter gibt die Anzahl der Mausklicks an die simuliert werden sollen. Solche simplen Fragen kannst du dir übrigens selbst beantworten, indem du den Hilfeartikel zu der jeweiligen Funktion liest: http://translation.autoit.de/onlinehilfe/fu…ontrolClick.htm

    Zitat

    Durch das Aktivieren der relative Koordinaten zum aktiven Fenster" macht es auch nichts wenn sich die Bildschirmauflösung ändert?

    Wenn das Programm nicht eigenständig die Controls verschiebt, dann nicht :D. Die Position von Controls wird in Pixeln angegeben, aber nicht in Anteilen der Auflösung. Pixel sind Pixel, egal bei welcher Auflösung, Monitorgröße etc..

  • Zitat

    Solche simplen Fragen kannst du dir übrigens selbst beantworten, indem du den Hilfeartikel zu der jeweiligen Funktion liest:

    ...oder hier im Forumstext auf die Funktion klickst, oder in Scite auf die Funktion klickst und F1 drückst, oder oder oder....die deutsche Hilfe runterladen setze ich einfach mal voraus, die gibts hier im Forum links bei den Downloads.

    Zitat

    ie Position von Controls wird in Pixeln angegeben, aber nicht in Anteilen der Auflösung. Pixel sind Pixel, egal bei welcher Auflösung, Monitorgröße etc..

    die Klickposition ist die Position des Klicks innerhalb des Controls. D.h. solange sich die Größe des Controls nicht gravierend ändert, sollte da nichts schiefgehen, auch bei einer veränderten Bildschirmauflösung.
    Wichtig bzw nützlich sind diese Koordinaten ja nur bei Controls, die bspw. mehrere Icons enthalten. Wenn das Control nur aus "einem Stück" besteht (nicht wie bspw eine Dropdownliste), kann man die Koordinaten weglassen.

  • Es funktioniert leider nicht :(
    Ich habe gelesen das manche Fenster immun gegen Auto-It sind, kann das mein Problem sein?

    Welche Möglichkeiten gäbe es dann sonst noch? Zur richtigen Zeit Alt+F4 senden?

    Hier mein Script:

    [autoit]

    Run('msiexec /i "C:\Users\username\Desktop\VPCX Setup\Virtual_PCX_Runtime_v3.42i_x64.msi" /qb-! ALLUSERS=1 REBOOT=ReallySuppress')

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

    opt ("WinTitleMatchMode",2) ;erkennt Teile des Titels
    opt ("MouseCoordMode",2) ;relative Koordinaten zum aktiven Fenster

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

    WinWait("Digigram Drivers")
    WinActivate("Digigram Drivers") ;Fenster aktivieren
    ControlClick("Digigram Drivers","","[CLASS:Button; INSTANCE:1]","left",1,39,13)

    [/autoit]

    WindowInfo:

    Spoiler anzeigen

    ###### Edit: ######

    Warum funktioniert nichtmal sowas?
    Das Fenster ist aktiv und wenn ich ENTER auf der Tastatur drücke geht das Fenster zu...

    Siehe Code im Spoiler.

    Spoiler anzeigen
    [autoit]


    Run('msiexec /i "C:\Users\jhadmin\Desktop\VPCX Setup\Virtual_PCX_Runtime_v3.42i_x64.msi" /qb-! ALLUSERS=1 REBOOT=ReallySuppress')

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

    opt ("WinTitleMatchMode",2) ;erkennt Teile des Titels
    opt ("MouseCoordMode",2) ;relative Koordinaten zum aktiven Fenster

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

    ; WinWait("Digigram Drivers")
    ; WinActivate("Digigram Drivers") ;Fenster aktivieren
    ; ControlClick("Digigram Drivers","","1","left",1,39,13)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")
    Sleep(200)
    Send("{ENTER}")

    [/autoit]

    4 Mal editiert, zuletzt von runamoK (22. April 2013 um 15:52)

  • wie wärs mit:

    [autoit]

    if winexists("Digigram Drivers") then winclose("Digigram Drivers")

    [/autoit]

    oder:

    [autoit]

    if processexists("prozessname deines fensters") then processclose("prozessname deines fensters")

    [/autoit]

    P.S.: Wenn die Möglichkeiten schon genannt wurden, sorry, ich hab mir nich alles durchgelesen! :D

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • Danke, das ist meine Rettung. processclose funktioniert.

    Allerdings brauche ich Erhöhte Rechte um den Prozess beenden zu können.
    Gibts dazu noch nen Schalter/Funktion oder das Kompilierte Script dann einfach als Administrator ausführen?