Hallo,
nachdem mir in einem anderen Thread gesagt wurde mein Script wäre etwas "unschön" und wenn ich es auf mehrere funktionen aufteile würde wäre es besser, habe ich mich gleich an die Arbeit gemacht.
Das meiste habe ich inzwischen auch schon geändert, nur an einem Problem hänge ich im Moment
ich habe eine Function die in der GUI mittels startbutton ausgeführt wird, dort wird geprüft welche Checkboxen (= Installationen) ausgewählt sind...
Bei manchen Installation (Citrix, Outlook einrichten etc.) benötige ich jedoch 2 oder 3 Variablen die gleich nach dem Start per inputbox eingegeben werden. Gebraucht werden die Variablen aber erst später im Ablauf der Installationen.
Soweit so gut, aber wie bekomme ich nun die Variablen in die nachfolgenden Funktionen übernommen?
Spoiler anzeigen
Func startbutton() ; startet den Ablauf der Installationen nach Prüfung ob die Checkboxen ausgewählt wurden
MsgBox(48, "Installationsstart", "Die ausgewählten Installationen starten nun!" & @CR & @CR & "Ein Abbruch ist über STRG + ALT + X möglich!" )
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]If BitAND (GUICtrlRead($Checkbox5), $GUI_CHECKED) then ; Variablen mit Benutzerdaten für lokale Installation als Administrator füllen
$Benutzer_1 = InputBox ( "Benutzereinrichtung Windows", "Bitte geben Sie den Benutzernamen ein:" , "", "", 300, 100 )
$Domaene = InputBox ( "Benutzereinrichtung Windows", "Bitte geben Sie die Domäne ein:" , "", "", 300, 100 )
sleep(1000)
EndIf
If BitAND (GUICtrlRead($Checkbox5), $GUI_CHECKED) then check5() ; Benutzer lokal als Administrator einrichten (Verwendet Variablen von weiter oben!)
[/autoit] [autoit][/autoit] [autoit]Endfunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func check5()
If @OSVersion = "WIN_7" then
RunWait(@ComSpec & " /c " & 'RunDll32.exe shell32.dll,Control_RunDLL nusrmgr.cpl', "", @SW_HIDE) ;Benutzerkontenverwaltung öffnen Windows 7
WinWaitActive( "Benutzerkonten")
send("{tab}")
sleep(200)
send("{tab}")
sleep(200)
send("{space}")
WinWaitActive( "Benutzerkonten" , "Verwenden Sie die unten stehende Liste" )
Send("{ALTDOWN}H{ALTUP}")
send($Benutzer_1)
sleep(200)
send("{tab}")
sleep(200)
send($Domaene)
sleep(200)
send("{enter}")
sleep(200)
send("{down}")
sleep(200)
send("{enter}")
sleep(200)
send("{enter}")
sleep(500)
Send("{ALTDOWN}{F4}{ALTUP}")
sleep(1000)
EndIf
EndFunc
das war mein erster versuch, funktioniert aber nicht weil er dann in der funktion check5 sagt die Variablen sind nirgends deklariert...
Ich hab dann etwas gegoogelt und bin dann darauf gestoßen das man mit return die Variablen zurückgeben kann:
Spoiler anzeigen
Func startbutton() ; startet den Ablauf der Installationen nach Prüfung ob die Checkboxen ausgewählt wurden
MsgBox(48, "Installationsstart", "Die ausgewählten Installationen starten nun!" & @CR & @CR & "Ein Abbruch ist über STRG + ALT + X möglich!" )
If BitAND (GUICtrlRead($Checkbox5), $GUI_CHECKED) then check5_1()
[/autoit] [autoit][/autoit] [autoit]If BitAND (GUICtrlRead($Checkbox5), $GUI_CHECKED) then check5()
[/autoit] [autoit][/autoit] [autoit]Endfunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func check5()
If @OSVersion = "WIN_7" then
RunWait(@ComSpec & " /c " & 'RunDll32.exe shell32.dll,Control_RunDLL nusrmgr.cpl', "", @SW_HIDE) ;Benutzerkontenverwaltung öffnen Windows 7
WinWaitActive( "Benutzerkonten")
send("{tab}")
sleep(200)
send("{tab}")
sleep(200)
send("{space}")
WinWaitActive( "Benutzerkonten" , "Verwenden Sie die unten stehende Liste" )
Send("{ALTDOWN}H{ALTUP}")
send($Benutzer_1)
sleep(200)
send("{tab}")
sleep(200)
send($Domaene)
sleep(200)
send("{enter}")
sleep(200)
send("{down}")
sleep(200)
send("{enter}")
sleep(200)
send("{enter}")
sleep(500)
Send("{ALTDOWN}{F4}{ALTUP}")
sleep(1000)
EndIf
Endfunc
Func check5_1()
$Benutzer_1 = InputBox ( "Benutzereinrichtung Windows", "Bitte geben Sie den Benutzernamen ein:" , "", "", 300, 100 )
$Domaene = InputBox ( "Benutzereinrichtung Windows", "Bitte geben Sie die Domäne ein:" , "", "", 300, 100 )
Return $Benutzer_1
Return $Domaene
sleep(1000)
EndFunc
aber damit bekomm ich damit wird der Fehler nicht wirklich anders?
Bin ich da total falsch dran oder steh ich irgendwie auf dem Schlauch?
P.S. irgendwie wirft es mir hier beim reinkopieren ins Forum immer mal wieder die Einrückung raus, liegt das an mir oder muss man da etwas beachten?