Hi,
Jetzt, wo ich mich um den Anfangsdialog meines Programm kümmere, wollte ich für bestimmte Voreinstellungen eine Passwortabfrage einbauen. Die Abfrage habe ich dabei in einer Funktion geregelt. Das Problem ist jetzt, dass ich die 2. GUI (aus der Funktion) nach der Abgfrage nicht schließen kann.
Ich habe das Ganze mal so weit gekürzt, wie ich konnte. ich Hoffe es geht so:
[autoit]#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiTab.au3>
#include <EditConstants.au3>
Global $x = 0
Global $grx = 500
Global $gry = 600 ; Fenstergröße
Global $zahl = 0 ; Sicherheitsvariable
Global $cont = 1500 ;Pause zur Kontrolle vor dem Fortfahren
Global $hGUI = 1 ; Handle für Hauptfenster
Global $msg [2] = [0, 0]
Global $PC = 100
Global $hWeiterButton = 1
Global $hCancelButton = 1
Global $hPC_Combo = 1
Global $hProgTab = 1
Global $hTab1 = 1
Global $hTab2 = 1
Global $Checkbox1 [2] = [1, 1]
Global $Checkbox2 [2] = [1, 1]
$hGUI=GUICreate("Automatische PC-Einrichrung", $grx, $gry)
GUICtrlCreateLabel("Willkommen bei der Automatischen Einrichtung für Ihren PC.", 20, 10)
$hWeiterButton=GUICtrlCreateButton("&Weiter", $grx-(60+20), $gry-(25+20), 60, 25)
$hCancelButton=GUICtrlCreateButton("&Abbrechen", $grx-(60+60+10+20), $gry-(25+20), 60, 25)
GUICtrlCreateLabel("Wählen sie eine der Voreinstellungen:", 20, 40)
$hPC_Combo=GUICtrlCreateCombo ("Benutzerdefiniert", 205,38, 110, 20)
GUICtrlSetData($hPC_Combo,"Einstellung1|Einstellung2","Benutzerdefiniert")
If 1 Then
$hProgTab=GUICtrlCreateTab(20, 70, 460, 30)
$hTab1=GUICtrlCreateTabItem ("Tab1")
$Checkbox1[0]=GUICtrlCreateCheckbox("Checkbox1", 20, 100)
$hTab2=GUICtrlCreateTabItem ("Tab2")
$Checkbox2[0]=GUICtrlCreateCheckbox("Checkbox2", 20, 100)
GUICtrlCreateTabItem ("")
EndIf
GUISetState(@SW_SHOW)
[/autoit][autoit][/autoit][autoit]If 1 Then ;Alle Checkboxen Aktivieren und Unchecken
GUICtrlSetState($Checkbox1 [0], $GUI_ENABLE)
GUICtrlSetState($Checkbox2 [0], $GUI_ENABLE)
GUICtrlSetState($Checkbox1 [0], $GUI_UNCHECKED)
GUICtrlSetState($Checkbox2 [0], $GUI_UNCHECKED)
EndIf
While 1
$msg = GUIGetMsg(1)
If $msg[0] = $hCancelButton Then $msg[0] = $GUI_EVENT_CLOSE
Select ; Buttons
Case $msg[0] = $hWeiterButton
MsgBox(0, "", "Weiter")
EndSelect
Select ;Combobox beim ändern einer Checkbox auf Benutzerdefiniert setzen und Variable der Checkbox anpassen
Case $msg[0] = $Checkbox1[0]
$Checkbox1[1]=GUICtrlRead($msg[0])
GUICtrlSetData($hPC_Combo,"Benutzerdefiniert")
If $Checkbox1[1]<>1 Then $Checkbox1[1]=0
Case $msg[0] = $Checkbox2[0]
$Checkbox2[1]=GUICtrlRead($msg[0])
GUICtrlSetData($hPC_Combo,"Benutzerdefiniert")
If $Checkbox2[1]<>1 Then $Checkbox2[1]=0
EndSelect
Select ;Pulldown-Menü
Case $msg[0] = $hPC_Combo
$PC=GUICtrlRead($hPC_Combo)
Switch $PC
Case "Benutzerdefiniert"
MsgBox(0, "", $PC)
Case "Einstellung1"
$x=_PW_Check($PC, "Passwort1")
If $x=1 Then
_EigenIniRead(@ScriptDir & "\select.ini", "Desktop")
_CheckBoxes()
Else
GUICtrlSetData($hPC_Combo,"Benutzerdefiniert")
EndIf
Case "Einstellung2"
$x=_PW_Check($PC, "Passwort2")
If $x=1 Then
_EigenIniRead(@ScriptDir & "\select.ini", "Desktop")
_CheckBoxes()
Else
GUICtrlSetData($hPC_Combo,"Benutzerdefiniert")
EndIf
EndSwitch
Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $hGUI
Exit
EndSelect
WEnd
Exit
[/autoit][autoit][/autoit][autoit]Func _PW_Check($PCName, $PWist)
Local $hPW = 1 ; Handle für Passwortabfrage
Local $PW = 0 ; eingegebenes Passwort
Local $msgPW = 0
Local $hPWInputBox = 0
Local $hPWOKButton = 0
Local $hPWCancelButton = 0
Local $PWx = 10
Local $PWy = 80
Local $PWzahl = 0
Local $PWhelp = "Tipp"
$hPW=GUICreate("Passworteingabe für " & $PCName, 350, 140)
GUICtrlCreateLabel("Die von Ihnen ausgewählte Voreinstellung ist Passwortgeschützt.", 10, 10)
GUICtrlCreateLabel("Geben Sie das Passwort ein, oder wählen Sie Abbrechen um mit einer" & @CRLF & " anderen Auswahl fort zu fahren", 10, 35)
GUICtrlCreateLabel("Passwort:", $PWx, $PWy)
$hPWInputBox=GUICtrlCreateInput("", $PWx, $PWy+16, 150, 20, $ES_PASSWORD)
GUICtrlCreateLabel("Hinweis: " & $PWhelp, $PWx, $PWy+36)
$hPWOKButton=GUICtrlCreateButton("OK", 300, 110, 40, 23)
$hPWCancelButton=GUICtrlCreateButton("Abbrechen", 230, 110, 60, 23)
GUISetState(@SW_SHOW)
While 1
$msgPW = GUIGetMsg()
If $msgPW = $hPWCancelButton Then $msgPW = $GUI_EVENT_CLOSE
Select
Case $msgPW = $hPWOKButton
$PW=GUICtrlRead($hPWInputBox)
If $PW==$PWist And $PWzahl<2 Then
Return 1
ExitLoop
ElseIf $PWzahl<1 Then
MsgBox(0, "Falsche Eingabe", "Das eingegebene Passwort ist Falsch." & @CRLF & "Achten sie auf Groß- und Kleinschreibung." & @CRLF & @CRLF & "Sie haben 1 Versuch übrig")
ControlSetText($hPW, "", $hPWInputBox, "")
$PWzahl=$PWzahl+1
Else
Return 100
ExitLoop
EndIf
Case $msgPW = $GUI_EVENT_CLOSE
Return 0
ExitLoop
EndSelect
WEnd
EndFunc
Func _EigenIniRead($iniFile, $section) ;Voreingestellte Werte aus Ini lesen
EndFunc
Func _CheckBoxes() ;Checken der Checkboxes nach Ini-Angabe
EndFunc
exit
[/autoit]
Wäre super, wenn mir einer helfen könnte. Ich will die 2. GUI zur PW-Abfrage schließen, ohne das gesamte Script beenden zu müssen.
Edit:
Kommando Zurück. Ich habe eine Lösung gefunden. Mit der Funktion GUIDelete() lässt sich das Fenster schließen, wenn ich sie nach dem Beenden der Funktion _PW_Check() verwende und nicht am Ende dieser Funktion. Warum das so ist, weiß ich leider nicht.
Wenn ein Admin oder Mod so nett wäre, diese unnütze Frage bitte zu löschen?