Include und Checkbox Problem

  • Wollte erstmal ein Hallo an alle loswerden.
    Da ich aber in Sachen Autoit noch ein noob bin kann ich wohl auf Fragen noch nicht so dolle antworten :(
    NaJa kann ja noch......irgend wann :)

    Also muss dann noch gleich mit 2 Prob´s um die Ecke kommen aber ich bin echt am verzweifeln. ?(

    1.Ich habe 1 Hauptscript und mehrere kleine.
    Wie kann ich denn nun die Scripte mit #include in das Hauptscript einbinden und dann mit einem Button starten?
    Möchte eigentlich am Ende nur eine exe haben.
    Also das #include<blabla> schon klar aber dann starten mit Button?

    2.Habe ich eine GUI mit 5 Checkboxen die jeweils verschiedene Programme ausführen.
    Nun möchte ich aber das die Prog´s nicht gleich beim Checken der Boxen starten sondern ich erst eine auswahl treffe und dann mit einem
    Klick auf OK die Prog´s starten.
    Habs schon mit GuiCtrlRead probiert aber ich bekomme es einfach nicht hin das überhaut ein Prog startet . :cursing:

    Wäre echt Toll wenn mir jemand Helfen könnte - Hab mir echt schon Tage damit um die Ohren geschlagen. :whistling:
    Grüsse Michael

    • Offizieller Beitrag

    Hi,
    das wird schon noch ;)

    zu 1.
    Du brauchst die Skripte nicht extra erstellen und dann verknüpfen. Schreib sie alle gemeinsam.
    Ich vermute du hast ein Hauptskript mit GUI. Dann muß das etwa so aussehen:

    - Definition GUI Hauptskript mit definierten Button zum Aufruf der Sub-Skripte
    - While-Schleife Hauptskript
    mit Zuordnungen

    [autoit]

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $Button1
    _Funktion1()
    Case $Button2
    _Funktion2()
    ;........
    EndSwitch
    WEnd

    [/autoit]


    usw.

    und dann definierst du deine Sub-Skripte innerhalb der _Funktion1(), _Funktion2()...

    Wenn deine Subskripte auch GUI aufrufen, mußt du mit $msg = GUIGetMsg(1) arbeiten. (bitte dazu in der Hilfe die Rveränderte Rückgabe beachten!)

    zu 2.
    Dazu darfst du mal unsere Boardsuche nutzen ;) - das Thema wurde schon seeehhhhhr oft behandelt.

  • Hi,

    danke euch beiden habs hin bekommen klasse Hilfe :thumbup:
    Manchmal Denkt man halt auch im Loop :whistling:
    Habe auch zu 2. einfach unter den Falschen begriffen gesucht :(

    Hab aber noch eine Sache wo meine kleinen Kenntnisse versagen habe hier diese Line. Kommt immer ein Error: Missing right bracket ´)´ in expression

    [autoit]

    ElseIf WinExists("Maintenance", "Close") And Not ("Maintenance", "Correct &Problems") Then

    [/autoit]

    Leider lässt sich das Tool nicht Steuern und die Buttons Tauchen gleichzeitig auf :(
    Könnte mir das bitte jemand umschreiben das es Funktioniert?
    Hab es schon mit der Hilfe Probiert aber da werde ich nicht schlau raus.

    • Offizieller Beitrag

    Auf die Idee die Klammer vor dem Befehl zu schreiben wäre ich nie gekommen.

    Damit ElseIf für beide folgenden WinExists-Abfragen gilt, müssen diese eingeklammert werden. Für die zweite Prüfung hattest du auch den Befehl WinExists vergessen.

  • Hi,
    ja irgend wie fehlt mir da wohl noch das Logische Denken eines Scripteschreibers.

    Hab da auch schon das nächste :(
    Das Script bleibt immer stehen nach der While 1 oder 2 schleife. Habe auch keine Ahnung wo ich da überhaupt ansetzen soll!
    Denke das es an der Select/Case liegt. Aber wie soll ich das ändern?

    Spoiler anzeigen
    [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $GUI_EVENT_MINIMIZE
    MsgBox(0, "", "Dialog minimized", 2)
    Case $msg = $GUI_EVENT_MAXIMIZE
    MsgBox(0, "", "Dialog restored", 2)
    Case $msg = $Abbrechen
    Exit
    Case $msg = $OK
    If GUICtrlRead($checkbox1) = $gui_checked Then
    Run ("D:\Maintenance.exe", "", @SW_MAXIMIZE)
    While 2
    If WinExists(" Maintenance", "Correct &Problems") Then
    Sleep (1000)
    MouseClick ("left" ,652, 703) ;Correct Problems CLick
    ElseIf (WinExists(" Maintenance", "Close") And Not WinExists("Maintenance", "Correct &Problems"))Then
    Sleep (1000)
    MouseCLick ("Left" ,777, 704);Close Click
    ExitLoop 2
    ElseIf WinExists("Maintenance", "Finish")Then ;Warten auf Button Finish
    Sleep (500)
    MouseCLick ("Left" ,777, 704);Finish Click
    ExitLoop 2
    EndIf
    WEnd
    ElseIf GUICtrlRead($checkbox2) = $gui_checked Then
    Run ("D:\Programme\blabla\blabla.exe", "",@SW_MAXIMIZE)
    WinWaitActive(" Nutzung auf eigene Gefahr!")
    MouseClick("Left", 234,136);Überprüfung starten
    While 3
    If WinExists(" Nutzung auf eigene Gefahr!", "Probleme gefunden") Then
    WinWait(" Nutzung auf eigene Gefahr!", "Probleme beheben");!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    MouseClick("Left",325,117);---Button Probleme beheben
    ;MouseClick("Left" ,63,221);---Button Imunisieren
    ExitLoop 3
    ElseIf WinExists(" Nutzung auf eigene Gefahr!", "0 Probleme gefunden") Then
    MouseClick("Left", 16,28);--Datei Button
    Sleep(1000)
    MouseClick("Left", 50,81);--Beenden Button
    ExitLoop 3
    EndIf
    WEnd
    Else MsgBox(16,"","Keine Auswahl getroffen!")
    EndIf
    EndSelect
    WEnd

    [/autoit]

    mfg Natz

    Einmal editiert, zuletzt von Natz (17. Januar 2008 um 22:51)

  • Hi,

    Hab auch schon ohne Parameter also nur ExitLoop.
    Trotzdem leider das Gleiche.Habe schon so viel ausprobiert - ohne Erfolg:-(

    Es sollen bei dem Script aus 5 Checkboxen eine auswahl getroffen werden ( habe nur mit 2 CB gepostet wegen der Grösse).
    Also CB 1 und CB 3. Dann soll das Script nur die Progs starten die checked sind.

    Leider wird nur immer das Prog gestartet das durch die erste makierte CB gestartet wird. Die Folgenden CB werden nicht mehr beachtet.
    Das Script ist Paused.

    mfg Natz

  • Hi mochmal,

    also habe den Fehler jetzt gefunden.
    Wenn das erste Prog beendet ist Wartet das script an Zeile 12 nochmals auf betätigung des Buttons.
    Wenn ich Ihn drücke startet auch das nächste Prog.

    Würde mal sagen er beendet die erste schleife.

    Habe nur keine Ahnung wie ich das beheben soll!? Kann mir da bitte einer Helfen?