Func nacheinander starten

  • Hi,

    ich habe ein GUI-Maske entworfen, bei der
    1.) einmal einzelne Funktionen gestartet werden können und
    2.) auf der anderen Seite alle nacheinander in einer bestimmten Reighenfolge gestartet werden sollen. (Funktionen sind schon vorhanden)

    Wie bekomme ich eine komfortable Lösung für 2.) ?

    Ich stelle es mir so vor, das in einer definierten "func" die einzelnen Funktionen nacheinander gestartet werden können. --> Button "Installation"

    Meine jetzige Lösung sieht vor, alles noch einmal aus den einzelnen Funktionen in die Install-Funktion hineinzukopieren. Leider zuviel an Text und eben nicht schön.

    Hier ein Auszug aus meinem Script:

    [autoit]


    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode",1)
    #Region ### START Koda GUI section ### Form=d:\download\koda 1.6.0.2\forms\grafik.kxf
    GUICreate("Admin-Einstellungen", 585, 466, 217, 127)
    GUISetBkColor(0x656C81)
    $Button1 = GUICtrlCreateButton("IE-Reiter ausblenden", 350, 25, 220, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetOnEvent($Button1,"Ausblenden")
    $Button2 = GUICtrlCreateButton("IE-Reiter einblenden", 350, 55, 220, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetOnEvent($Button2,"Einblenden")
    $Button3 = GUICtrlCreateButton("Recent Docs ausschalten", 350, 85, 220, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetOnEvent($Button3,"RecentOf")
    $Button4 = GUICtrlCreateButton("Proxy auf Arcor ändern", 350, 115, 220, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetOnEvent($Button4,"Proxy")
    $Button5 = GUICtrlCreateButton("Recent Docs einschalten", 350, 145, 220, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetOnEvent($Button5,"RecentOn")
    $Button6 = GUICtrlCreateButton("Admin freischalten", 350, 175, 220, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetOnEvent($Button6,"Admin")
    $Button7 = GUICtrlCreateButton("Senden an", 350, 205, 220, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetOnEvent($Button7,"Senden")
    $Button8 = GUICtrlCreateButton("SUS-Service", 350, 235, 220, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetOnEvent($Button8,"SUS_Service")
    $Button98 = GUICtrlCreateButton("Installation ", 15, 56, 220, 81, 0)
    GUICtrlSetFont(-1, 20, 800, 0, "MS Sans Serif")
    GUICtrlSetOnEvent($Button98,"Installation")

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

    $Button99 = GUICtrlCreateButton("EXIT", 15, 385, 220, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetOnEvent($Button99,"OnExit")

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

    GUISetOnEvent($GUI_EVENT_CLOSE,"OnExit")

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

    GUISetState() ; display the GUI

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

    #EndRegion ### END Koda GUI section ###

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

    While 1
    Sleep (1000)
    WEnd

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

    ;--------------- Functions ---------------
    Func Ausblenden();blendet die Reiter des IE aus (Erweitert, Programme, Verbindungen)
    WinMinimizeAll()
    ; Set the RunAs parameters to use local adminstrator account
    ; Declare all variables used
    Dim $Username, $Password

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

    ; Initialization of the variables
    $Username = "Adminsitrator"
    $Password = ""

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

    ; Set the RunAs parameters to use local adminstrator account
    RunAsSet($Username, @Computername, $Password)
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main","Start Page","REG_SZ","http://www.club-vaio.com/de/")
    RegWrite("HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel","ConnectionsTab","REG_DWORD","1")
    RegWrite("HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel","ProgramsTab","REG_DWORD","1")
    RegWrite("HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel","AdvancedTab","REG_DWORD","1")
    RegWrite("HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel","HomePage","REG_DWORD","1")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings","MigrateProxy","REG_DWORD","1")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings","EnableHttp1_1","REG_DWORD","1")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings","ProxyEnable","REG_DWORD","1")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings","ProxyHttp1.1","REG_DWORD","1")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings","ProxyServer","REG_SZ","10.14.5.131:8000")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings","ProxyOverride","REG_SZ","*.db.de;172.*;localhost;<local>")
    MsgBox(64, "Installation", "Es werden die Reiter Verbindungen, Erweitert, Programme ausgeblendet.")
    EndFunc

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

    Func Einblenden();blendet die Reiter des IE wieder ein
    WinMinimizeAll()
    ; Set the RunAs parameters to use local adminstrator account
    ; Declare all variables used
    Dim $Username, $Password

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

    ; Initialization of the variables
    $Username = "Administrator"
    $Password = ""

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

    ; Set the RunAs parameters to use local adminstrator account
    RunAsSet($Username, @Computername, $Password)
    RegDelete("HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel","ConnectionsTab")
    RegDelete("HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel","ProgramsTab")
    RegDelete("HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel","AdvancedTab")
    RegDelete("HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel","HomePage")
    MsgBox(64, "Installation", "Es werden nun wieder alle Reiter eingeblendet.")
    EndFunc

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

    Func RecentOf();schaltet den Ordner "Dokumente" im Startmenü aus
    WinMinimizeAll()
    ; Set the RunAs parameters to use local adminstrator account
    ; Declare all variables used
    Dim $Username, $Password

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

    ; Initialization of the variables
    $Username = "Administrator"
    $Password = ""

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

    ; Set the RunAs parameters to use local adminstrator account
    RunAsSet($Username, @Computername, $Password)
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoDriveTypeAutoRun", "REG_BINARY", "91000000")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "ClearRecentDocsOnExit", "REG_DWORD", "1")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoRecentDocsMenu", "REG_DWORD", "1")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoRecentDocsHistory", "REG_DWORD", "1")
    MsgBox(64, "Installation", "Es wurden alle Daten erfolgreich geändert.")
    EndFunc

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

    Func Proxy();schaltet den Proxy auf Arcor um
    WinMinimizeAll()
    ; Set the RunAs parameters to use local adminstrator account
    ; Declare all variables used
    Dim $Username, $Password

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

    ; Initialization of the variables
    $Username = "Administrator"
    $Password = ""

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

    ; Set the RunAs parameters to use local adminstrator account
    RunAsSet($Username, @Computername, $Password)
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings","MigrateProxy","REG_DWORD","1")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings","EnableHttp1_1","REG_DWORD","1")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings","ProxyEnable","REG_DWORD","1")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings","ProxyHttp1.1","REG_DWORD","1")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings","ProxyServer","REG_SZ","wwwproxy.arcor.db.de:8000")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings","ProxyOverride","REG_SZ","*.db.de;172.*;localhost;<local>")
    MsgBox(64, "Installation", "Es wurde der Proxy - Arcor - erfolgreich geändert.")
    EndFunc

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

    Func RecentOn();schaltet den Ordner "Dokumente" im Startmenü wieder frei
    WinMinimizeAll()
    ; Set the RunAs parameters to use local adminstrator account
    ; Declare all variables used
    Dim $Username, $Password

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

    ; Initialization of the variables
    $Username = "Administrator"
    $Password = ""

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

    ; Set the RunAs parameters to use local adminstrator account
    RunAsSet($Username, @Computername, $Password)
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoRecentDocsMenu", "REG_DWORD", "0")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoRecentDocsHistory", "REG_DWORD", "0")
    MsgBox(64, "Installation", "Es wurden alle Daten erfolgreich geändert.")
    EndFunc

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

    Func Admin();schaltet den Admin im Startmenü frei
    WinMinimizeAll()
    ; Set the RunAs parameters to use local adminstrator account
    ; Declare all variables used
    Dim $Username, $Password

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

    ; Initialization of the variables
    $Username = "Administrator"
    $Password = ""

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

    ; Set the RunAs parameters to use local adminstrator account
    RunAsSet($Username, @Computername, $Password)
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList", "Administrator", "REG_DWORD", "1")
    MsgBox(64, "Installation", "Die Anmeldung des Administrator wurde erfolgreich geändert.")
    EndFunc

    [/autoit]
  • Du schreibst ne neue Funktion, die dann die anderen der Reihe nach abruft oder ich bin mir nicht sicher, aber mit @GUI_CTRLID kannste ja dann in den Funktionen, die gestartet werden sollen abfragen ob der eine Button gedrückt wurde und wenn ja dann rufst du die nächste Funktion auf.

    Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Opt("GUICoordMode",2)
    Opt("GUIResizeMode", 1)
    Opt("GUIOnEventMode", 1)

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

    GUICreate( "" )
    $ctrlButton_OK = GUICtrlCreateButton( "Alle Funktionen", 10, 10 )
    $ctrlButton_False = GUICtrlCreateButton( "Eine Funktion", 50, 10 )
    GUICtrlSetOnEvent( $ctrlButton_OK, "RunThis" )
    GUICtrlSetOnEvent( $ctrlButton_False, "RunThis" )
    GUISetOnEvent( $GUI_EVENT_CLOSE, "_Exit" )
    GUISetState()

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Exit()
    Exit
    EndFunc

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

    Func RunThis()
    MsgBox( 0, "", "Erste Funktion" )
    If @GUI_CtrlId = $ctrlButton_OK Then RunThisAgain()
    EndFunc

    Func RunThisAgain()
    MsgBox( 0, "", "Zweite Funktion" )
    EndFunc

    [/autoit]

    2 Mal editiert, zuletzt von Daniel W. (5. November 2006 um 15:05)

  • Danke für die schnelle Hilfe.


    Wie bekomme ich aber bei dem Beispiel mehr als 2 func in eine Func?

    Bzw. wie geht es bei dem Beispiel weiter mit der 3./ 4./ 5./ n. Func nach " If @GUI_CtrlId = $ctrlButton_OK Then RunThisAgain()" ?

    [autoit]


    Func RunThis()
    MsgBox( 0, "", "Erste Funktion" )
    If @GUI_CtrlId = $ctrlButton_OK Then RunThisAgain()
    EndFunc

    [/autoit]
  • Du meinst er soll:

    Func RunThis()
    MsgBox( 0, "", "Erste Funktion" )
    If @GUI_CtrlId = $ctrlButton_OK Then RunThisAgain()
    EndFunc

    öfter machen?


    [autoit]

    Func RunThis()
    MsgBox( 0, "", "Erste Funktion" )
    If @GUI_CtrlId = $ctrlButton_OK Then RunThis()
    EndFunc

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

    oder meinst du er soll die nächste starten?

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

    ja dann einach mit

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

    Func RunThis()
    MsgBox( 0, "", "Erste Funktion" )
    If @GUI_CtrlId = $ctrlButton_OK Then nächsteFunc()
    EndFunc

    [/autoit]
  • Leider bekomme ich dann immer eine Fehlermeldung, das die Variable nicht definiert ist. :hammer:

    Ist so eine Kombination möglich?: (Aufruf der "Func" --> Sprung direkt dahin)

    [autoit]


    Func Installation_komplett()
    Func Ausblenden()
    Func RecentOf()
    Func Proxy()
    Func Senden()
    Func SUS_Service()

    EndFunc

    [/autoit]

    Dabei sind die aufgerufenen Funktionen einzeln defindiert.

    Einmal editiert, zuletzt von puni4 (5. November 2006 um 18:17)

  • Ne geht so nicht 8| wieso sollte es auch?

    So meinste das doch odeR?

    [autoit]

    Func RunThis()
    MsgBox( 0, "", "Erste Funktion" )
    If @GUI_CtrlId = $ctrlButton_OK Then
    RunThisAgain()
    Funktion3()
    Endif
    EndFunc

    [/autoit]
  • Ja. So meinte ich es. Anscheind funktioniert es so aber nicht.

    Ich werden den Weg mit der

    [autoit]

    Func RunThis()
    MsgBox( 0, "", "Erste Funktion" )
    If @GUI_CtrlId = $ctrlButton_OK Then RunThis()
    EndFunc

    oder meinst du er soll die nächste starten?

    ja dann einach mit

    Func RunThis()
    MsgBox( 0, "", "Erste Funktion" )
    If @GUI_CtrlId = $ctrlButton_OK Then nächsteFunc()
    EndFunc

    [/autoit]

    ...wählen. Ist zwar ein größerer Aufwand, alles umzuschreiben, aber dafür übersichtlicher. In der letzten Version von AutoIt gab es ja auch noch den "goto"-Befehl. Daa wäre meine erste Wahl gewesen.


    Trotzdem vielen Danke für die schnellen und guten Antworten. Bisher hatte ich in englischsprachigen Foren um Tips gebeten. Auf Deutsch ist natürlich wesentlich besser und verständlicher...