Sicherheitscode

  • [Blockierte Grafik: http://img9.myimg.de/preview63cce.jpg]

    Ich habe ein kleines Script geschrieben, welches zufällige Zahlen generiert und das zu den Zahlen passende Bild anzeigt. So entsteht ein Bilder-Code aus Fünf Zahlen (0-9).
    Diese Zahlenabfolge muss man eingeben und "Bestätigen" klicken. Nun wird geprüft, ob die Eingabe mit der Zahlenabfolge übereinstimmt. Wenn nicht, wird eine Fehlermeldung angezeigt und es wird eine neue Zahlenabfolge generiert. Wenn man 3x den Code falsch eingegeben hat, wird das Script beendet.
    Wenn der Code richtig eingegeben wurde, kan man z.B. einen Run-Befehl ausführen. Was passieren soll, nachdem der Code richtig eingegeben wurde, kann ganz einfach geändert werden.

    Info: Das Script könnt ihr nach belieben umbauen, wäre cool, wenn ihr mir zeigen könntet was ihr draus gemacht habt. Die Bildchen der Zahlen könnt ihr auch frei verwenden. :D

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <ButtonConstants.au3>

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

    $times = 0
    Global $pic[5], $random

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

    Opt("GUIOnEventMode", 1)
    $secure = GUICreate("Sicherheitscheck", 130, 85, 193, 129)
    $code = GUICtrlCreateInput("Sicherheitscode...", 8, 40, 113, 21)
    GUICtrlSetLimit(-1, 5)
    For $i = 0 To 4
    $pic[$i] = GUICtrlCreatePic("", 8+$i*24, 8, 17, 25, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUICtrlSetResizing(-1, $GUI_DOCKAUTO)
    Next
    $button1 = GUICtrlCreateButton("Bestätigen!", 8, 64, 113, 17, $BS_DEFPUSHBUTTON)
    GUICtrlSetOnEvent(-1, "check")

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

    GUISetState(@SW_SHOW)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
    Refresh()
    While 1
    Sleep(1000)
    WEnd

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

    Func check()
    If GUICtrlRead($code) = $random Then
    MsgBox(0, "Erfolg!", "Sicherheitscheck erfolgreich. Vielen Dank für ihre Geduld.") ;# Wer nicht will, dass sich ein Fenster öffnet, indem mitgeteilt wird, dass der Code richtig eingegeben wurde, kann diese Zeile löschen. #
    Closeandopen()
    Else
    $times += 1
    If $times = 3 Then
    MsgBox(64, "Es ist ein Fehler aufgetreten!", "Sie haben bereits 3x den Sicherheitscode falsch eingegeben. Das Programm wird nun beendet.")
    Exit
    Else
    MsgBox(64, "Es ist ein Fehler aufgetreten!", "Der eigegebene Sicherheitscode stimmt nicht mit dem Bild überein! Versuchen sie es bitte erneut.")
    Refresh()
    EndIf
    EndIf
    EndFunc

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

    Func Refresh()
    $random = ""
    For $i = 0 To 4
    $ran = Random(0, 9, 1)
    $random &= $ran
    GUICtrlSetImage($pic[$i], @ScriptDir&"\images\"&$ran&".jpg")
    Next
    EndFunc

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

    Func CLOSEClicked()
    Exit
    EndFunc

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

    ;# Diese Funktion wird gestartet, nachdem der Code richtig eingegeben wurde. #
    Func Closeandopen()
    Run("notepad.exe") ;# Hier den Pfad der zu öffnenden EXE, BAT, COM oder PIF Datei eingeben. (Run ( "filename" [, "workingdir" [, flag]] )) #
    Exit
    EndFunc

    [/autoit]

    Im Dateianhang enthalten:
    secure.au3
    /images:
    0.jpg
    1.jpg
    2.jpg
    3.jpg
    4.jpg
    5.jpg
    6.jpg
    7.jpg
    8.jpg
    9.jpg

    2 Mal editiert, zuletzt von Wambo (18. Juni 2008 um 22:56)

    • Offizieller Beitrag

    Nettes Script hast Du da geschrieben! :)

    Man kann aber einiges kürzen:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <ButtonConstants.au3>

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

    $times = 0
    Global $pic[5], $random

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

    Opt("GUIOnEventMode", 1)
    $secure = GUICreate("Sicherheitscheck", 130, 85, 193, 129)
    $code = GUICtrlCreateInput("Sicherheitscode...", 8, 40, 113, 21)
    For $i = 0 To 4
    $pic[$i] = GUICtrlCreatePic("", 8+$i*24, 8, 17, 25, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUICtrlSetResizing(-1, $GUI_DOCKAUTO)
    Next
    $button1 = GUICtrlCreateButton("Bestätigen!", 8, 64, 113, 17, $BS_DEFPUSHBUTTON)
    GUICtrlSetOnEvent(-1, "check")

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

    GUISetState(@SW_SHOW)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
    Refresh()
    While 1
    Sleep(1000)
    WEnd

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

    Func check()
    If GUICtrlRead($code) = $random Then
    MsgBox(0, "Erfolg!", "Sicherheitscheck erfolgreich. Vielen Dank für ihre Geduld.") ;# Wer nicht will, dass sich ein Fenster öffnet, indem mitgeteilt wird, dass der Code richtig eingegeben wurde, kann diese Zeile löschen. #
    Closeandopen()
    Else
    $times += 1
    If $times = 3 Then
    MsgBox(64, "Es ist ein Fehler aufgetreten!", "Sie haben bereits 3x den Sicherheitscode falsch eingegeben. Das Programm wird nun beendet.")
    Exit
    Else
    MsgBox(64, "Es ist ein Fehler aufgetreten!", "Der eigegebene Sicherheitscode stimmt nicht mit dem Bild überein! Versuchen sie es bitte erneut.")
    Refresh()
    EndIf
    EndIf
    EndFunc

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

    Func Refresh()
    $random = ""
    For $i = 0 To 4
    $ran = Random(0, 9, 1)
    $random &= $ran
    GUICtrlSetImage($pic[$i], @ScriptDir&"\images\"&$ran&".jpg")
    Next
    EndFunc

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

    Func CLOSEClicked()
    Exit
    EndFunc

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

    ;# Diese Funktion wird gestartet, nachdem der Code richtig eingegeben wurde. #
    Func Closeandopen()
    Run("notepad.exe") ;# Hier den Pfad der zu öffnenden EXE, BAT, COM oder PIF Datei eingeben. (Run ( "filename" [, "workingdir" [, flag]] )) #
    Exit
    EndFunc

    [/autoit]

    Schleifen und Arrays ersparen so manche Codezeile. :rolleyes: