Eine If-Funktion??

  • Hey Leute,
    ich habe mal etwas vorbereitet,
    es geht um einen Register und eine Nutzung eines Programmes von mir. So lautet der Script :

    [autoit]

    #RequireAdmin
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("PC-Informations", 615, 395)
    $tab = GUICtrlCreateTab(8, 8, 601, 369)
    $TabSheet1 = GUICtrlCreateTabItem("Login")
    $user = GUICtrlCreateInput("Benutzername", 40, 64, 121, 21)
    $pw = GUICtrlCreateInput("Passwort", 40, 96, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD))
    $login = GUICtrlCreateButton("Login", 40, 128, 75, 25)
    $TabSheet2 = GUICtrlCreateTabItem("Register")
    $Label1 = GUICtrlCreateLabel("Hier siehst du den Reg.", 32, 56, 153, 17)
    $usernew = GUICtrlCreateInput("Benutzername", 40, 80, 121, 21)
    $pwnew = GUICtrlCreateInput("Passwort", 40, 112, 121, 21)
    $register = GUICtrlCreateButton("Register", 40, 140, 75, 25)
    $TabSheet3 = GUICtrlCreateTabItem("PC-Info-Tool")
    $text = GUICtrlCreateLabel("Nicht eingeloggt", 32, 48,99999999999)
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $tab
    If GUICtrlRead($tab) = 2 Then
    #RequireAdmin
    Local $iState
    If @CPUArch = "X64" And Not @AutoItX64 Then
    DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "ptr", $iState)
    EndIf

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

    Opt("TrayIconHide", 1)

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

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Run(@ComSpec & " /c " & 'systeminfo > '&@TempDir&'\Systeminfos.txt', "", @SW_HIDE)

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

    $volume = DriveGetLabel("C:\")
    $serial = DriveGetSerial("C:\")
    $total = DriveSpaceTotal("C:\")
    $free = DriveSpaceFree("C:\")

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

    $Form1 = GUICreate("System-Information v2.0", 591, 325)
    $Label1 = GUICtrlCreateLabel("Computername", 24, 24, 75, 17)
    $Label2 = GUICtrlCreateLabel("Benutzername", 24, 56, 72, 17)
    $Label3 = GUICtrlCreateLabel("Betriebssystem", 24, 88, 74, 17)
    $Label4 = GUICtrlCreateLabel("Service Pack", 24, 120, 68, 17)
    $Label5 = GUICtrlCreateLabel("C: Datenträgerkennsatz", 24, 152, 116, 17)
    $Label6 = GUICtrlCreateLabel("C: Seriennummer", 24, 184, 84, 17)
    $Label7 = GUICtrlCreateLabel("C: Gesamtspeicher", 24, 216, 93, 17)
    $Label8 = GUICtrlCreateLabel("C: freier Speicher", 24, 248, 85, 17)
    $Label9 = GUICtrlCreateLabel("IP-Adresse", 312, 24, 55, 17)
    $Label10 = GUICtrlCreateLabel("Startverzeichnis", 312, 56, 79, 17)
    $Label11 = GUICtrlCreateLabel("Windowsverzeichnis", 312, 88, 101, 17)
    $Button1 = GUICtrlCreateButton("Passwörter der Benutzer verwalten", 16, 272, 187, 41)
    $Button2 = GUICtrlCreateButton("Check System", 208, 272, 187, 41)
    $Label12 = GUICtrlCreateLabel("Desktop-Verzeichis", 312, 120, 95, 17)
    $Label13 = GUICtrlCreateLabel("Desktop-Breite", 312, 152, 74, 17)
    $Label14 = GUICtrlCreateLabel("Desktop-Höhe", 312, 184, 73, 17)
    $Label15 = GUICtrlCreateLabel("Datum", 312, 216, 35, 17)
    $Label16 = GUICtrlCreateLabel("Uhrzeit", 312, 248, 37, 17)
    $Input1 = GUICtrlCreateInput("", 176, 16, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Input2 = GUICtrlCreateInput("", 176, 48, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Input3 = GUICtrlCreateInput("", 176, 80, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Input4 = GUICtrlCreateInput("", 176, 112, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Input5 = GUICtrlCreateInput("", 176, 144, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Input6 = GUICtrlCreateInput("", 176, 176, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Input7 = GUICtrlCreateInput("", 176, 208, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Input8 = GUICtrlCreateInput("", 176, 240, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Input9 = GUICtrlCreateInput("", 448, 16, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Input10 = GUICtrlCreateInput("", 448, 48, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Input11 = GUICtrlCreateInput("", 448, 80, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Input12 = GUICtrlCreateInput("", 448, 112, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Input13 = GUICtrlCreateInput("", 448, 144, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Input14 = GUICtrlCreateInput("", 448, 176, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Input15 = GUICtrlCreateInput("", 448, 208, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Input16 = GUICtrlCreateInput("", 448, 240, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
    $Button3 = GUICtrlCreateButton("Erweitert", 400, 272, 185, 41)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    If @CPUArch = "X64" And Not @AutoItX64 Then
    DllCall("kernel32.dll", "int", "Wow64RevertWow64FsRedirection", "dword", $iState)
    EndIf
    MsgBox(0,"Made by LB-T3ch","Verbesserungen, Anregungen, oder Fehler an AutoIT.DE : lukasboy, Cheater Dieter")
    Exit
    Case $Button3
    SplashTextOn ("Bitte warten...","Erweiterte Infos werden gesammelt. Dies kann einige Zeit (bis zu einer halben Minute) dauern.")
    While 1
    If FileGetSize (@TempDir & "\Systeminfos.txt") <> 0 Then
    ExitLoop
    EndIf
    WEnd
    SplashOff ()

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

    GUICreate("Erweiterte Infos", 615, 438)
    GUICtrlCreateEdit(FileRead (@TempDir & "\Systeminfos.txt"), 8, 8, 601, 361, BitOR($GUI_SS_DEFAULT_EDIT,$ES_READONLY))
    $testram = GUICtrlCreateButton("Arbeitsspeicher auf Fehler überprüfen", 8, 384, 203, 49)
    $derfag = GUICtrlCreateButton("Festplatte defragmentieren", 408, 384, 203, 49)
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ShellExecute (@ScriptFullPath)
    Exit
    Case $testram
    If @OSVersion = "WIN_7" Or @OSVersion = "WIN_VISTA" Then
    ShellExecute ("MdSched.exe")
    Else
    MsgBox(16,"Error","Du hast ein nicht geeignetes Betriebssystem für diesen Befehl...")
    EndIf
    Case $derfag
    If @OSVersion = "WIN_7" Or @OSVersion = "WIN_VISTA" Then
    ShellExecute ("dfrgui.exe")
    Else
    ShellExecute ("dfrg.msc")
    EndIf
    EndSwitch
    WEnd
    Case $Button1
    GUICreate("Passwort ändern", 370, 171)
    GUICtrlCreateLabel("Hier können Sie die Passwörter der einzelnen Benutzer ändern:", 8, 8, 302, 17)
    GUICtrlCreateLabel("Name des zu bearbeitenten Benutzerkontos (z.B. Heike):", 8, 32, 272, 17)
    $user = GUICtrlCreateInput(@UserName, 16, 48, 121, 21)
    GUICtrlCreateLabel("Neues Passwort (um das Passwort zu entfernen, bitte das Feld leer lassen):", 8, 88, 357, 17)
    $pw = GUICtrlCreateInput("", 16, 104, 121, 21)
    $ok = GUICtrlCreateButton("OK", 147, 136, 75, 25)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ShellExecute (@ScriptFullPath)
    Exit
    Case $ok
    $user = GUICtrlRead ($user)
    $passwort = GUICtrlRead ($pw)
    If $passwort = "" Then
    If MsgBox (1,"Änderrungen bestätigen","Das Passwort des Benutzers '" & $user & "' wird nun entfernt.") = 1 Then Run(@ComSpec & " /c " & 'net user '& $user &' '& $passwort, "", @SW_HIDE)
    Else
    If MsgBox (1,"Änderrungen bestätigen","Das Passwort des Benutzers '" & $user & "' wird nun in '" & $passwort & "' geändert.") = 1 Then Run(@ComSpec & " /c " & 'net user '& $user &' '& $passwort, "", @SW_HIDE)
    EndIf
    ShellExecute (@ScriptFullPath)
    Exit
    EndSwitch
    WEnd

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

    Case $Button2
    GUICtrlSetData($Input1, "" & @ComputerName)
    GUICtrlSetData($Input2, "" & @UserName)
    GUICtrlSetData($Input3, "" & @OSType)
    GUICtrlSetData($Input4, "" & @OSServicePack)
    GUICtrlSetData($Input5, "" & $volume)
    GUICtrlSetData($Input6, "" & $serial)
    GUICtrlSetData($Input7, "" & $total)
    GUICtrlSetData($Input8, "" & $free)
    GUICtrlSetData($Input9, "" & @IPAddress1)
    GUICtrlSetData($Input10, "" & @StartupDir)
    GUICtrlSetData($Input11, "" & @WindowsDir)
    GUICtrlSetData($Input12, "" & @DesktopDir)
    GUICtrlSetData($Input13, "" & @DesktopWidth)
    GUICtrlSetData($Input14, "" & @DesktopHeight)
    GUICtrlSetData($Input15, "" & @MDAY &"." & @MON &"." & @Year)
    GUICtrlSetData($Input16, "" & @HOUR &":" & @MIN &":" & @SEC)
    EndSwitch
    WEnd
    EndIf
    Case $login
    $user = GUICtrlRead ($user)
    $pw = GUICtrlRead ($pw)
    If Not FileReadLine (@ScriptDir & "\Datenbank\" & $user & ".txt") = $pw Then
    MsgBox (16,"","Inkorrekte Logindaten")
    ShellExecute (@ScriptFullPath)
    Exit
    Else
    MsgBox (0,"","Du hast dich erfolgreich eingeloggt, " & $user)
    GUICtrlSetData ($text,FileReadLine (@ScriptDir & "\Datenbank\" & $user & ".txt",2))
    EndIf
    Case $register
    $usernew = GUICtrlRead ($usernew)
    $pwnew = GUICtrlRead ($pwnew)
    If $pwnew = "" Or $usernew = "" Then
    MsgBox (16,"","Fehlende Daten")
    ShellExecute (@ScriptFullPath)
    Exit
    EndIf

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

    FileWrite (@ScriptDir & "\Datenbank\" & $usernew & ".txt",$pwnew &@CRLF & "Das ist nur für dich " & $usernew)
    MsgBox (0,"","Sie haben sich erfolgreich registriert und können sich nun einloggen.")
    EndSwitch
    WEnd

    [/autoit]


    Das ist aber nicht alles so wie ich es wollte.
    Wenn man nun ohne sich eingeloggt zu haben auf PC-Info-Tool klickt, sieht man das Programm. Ich möchte, dass man das Programm nur sieht, wenn man sich erfolgreich angemeldet hat.
    Freue mich auf zahlreiche Antworten, danke im Vorraus ;)

  • Lass das bitte den ersten und letzten Beitrag sein, den du bereits nach so kurzer Zeit hochschubst.

    Erstell eine globale Variable der du als Wert false zuweist. Wenn du eine Anmeldung erfolgreich auswertest, setz sie auf true. Dann nurnoch ein If $login = true then ... endif um das GUI deines PC-Info Tool und fertig.

  • Im Übrigen ist geht es in dem Script einmal kreuz und quer durch den Garten.
    1. Du brauchst die Includes nur einmal einzubinden
    2. Ein If ... = ... Then #RequireAdmin ist sinnlos, da ein #RequireAdmin unabhängig von der Position immer am Scriptstart durchgeführt wird.
    3. Das da würde ich an den Scriptstart verschieben:

    [autoit]

    If @CPUArch = "X64" And Not @AutoItX64 Then
    DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "ptr", $iState)
    EndIf
    Opt("TrayIconHide", 1)

    [/autoit]


    4. Ein paar Einschübe wären auch nicht schlecht (tidy.exe hilft).

  • Habe nochmal schnell eine Funktion eingefügt: Ich bemerkte, dass der Register nicht funktionierte und las mir den Code nochmal durch. Ich bemerkte, dass jeder den Ordner Datenbank braucht und habe dies hinzugefügt :

    [autoit]

    If Not FileExists(@Scriptdir &"\Datenbank") Then
    DirCreate(@ScriptDir &"\Datenbank")
    EndIf

    [/autoit]


    Das heißt also wenn Datenbank nicht vorhanden ist soll es erstellt werden :)