Kenwort-Sicherung

  • Hey,
    ich bin Einsteiger was die Autoit Gui angeht und hoffe/weiß, dass ihr mir sicherlich helfen könnt...

    1. Wie kann die die Text Farbe von den Labels ändern?
    2. Wie kann ich alle Tastenkobinationen sperren oder einfach alles in dieses Fenster einsperren, sodass der User gezwungen ist das richtige Kennwort einzugeben?

    Mein Script bisher:

    Spoiler anzeigen
    [autoit]

    #Include <WinAPI.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    #NoTrayIcon
    $Main = GUICreate("Passwort-Schutz", @DesktopWidth, @DesktopHeight, 0, 0, 0x80000000, 0x00000080)

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

    OpenGui();

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

    Func OpenGui()
    $Height = @DesktopHeight / 2
    $Width = @DesktopWidth / 2
    WinSetOnTop($Main, "", 1)
    $Label1 = GUICtrlCreateLabel("Passwort:",$Width - 50,$Height - 80,100,20)
    GUICtrlSetBkColor($Label1, $GUI_BKCOLOR_TRANSPARENT)
    $PW_output = GuiCtrlCreateInput("",$Width - 50,$Height - 50,100,20)
    GUICtrlSetBkColor($PW_output, $GUI_BKCOLOR_TRANSPARENT)
    $SubmitButton = GUICtrlCreateButton("Anmelden",$Width - 50,$Height,100,20)
    GUICtrlSetBkColor($SubmitButton, $GUI_BKCOLOR_TRANSPARENT)
    Background()
    GUICtrlCreatePic(@ScriptDir & "\bg.jpg","0","0",@DesktopWidth, @DesktopHeight)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $SubmitButton
    CheckPW(GuictrlRead($PW_output))
    EndSwitch
    WEnd
    EndFunc

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

    Func Background()
    GUISetState(@SW_SHOW)
    For $i = 0 To 255 Step 1
    WinSetTrans($Main, "", $i)
    if $i = "255" Then
    EndIf
    Sleep(10)
    Next
    EndFunc

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

    Func CheckPW($entry)
    $Height = @DesktopHeight / 2
    $Width = @DesktopWidth / 2
    $ori_pw = "test"
    if $entry == $ori_pw Then
    Exit
    Else
    $Label2 = GUICtrlCreateLabel("Falsches Passwort! Bitte versuchen Sie es erneut!",$Width - 50,$Height - 200,100,100,$SS_CENTER)
    GUICtrlSetBkColor($Label2, $GUI_BKCOLOR_TRANSPARENT)
    EndIf
    EndFunc

    [/autoit]
  • Ich hab das ganze Script mal überarbeitet und etwas kommentiert:

    Spoiler anzeigen
    [autoit]

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

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

    Global $ori_pw = "test"
    Local $Height = @DesktopHeight / 2, $Width = @DesktopWidth / 2

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

    $Main = GUICreate("Passwort-Schutz", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
    ; Die Styles findest du in der Hilfedatei, die Variablen anstatt der Hex Werte zu verwenden ist viel übersichtlicher
    ; mit WS_EX_TOPMOST kannst du dir das Winontop sparen ;)
    $pic = GUICtrlCreatePic(@ScriptDir & "\bg.jpg","0","0",@DesktopWidth, @DesktopHeight)
    GUICtrlSetState($pic, $GUI_DISABLE); Hintergrundbilder sollten immer deaktiviert werden
    $Label1 = GUICtrlCreateLabel("Passwort:",$Width - 50,$Height - 80,100,20)
    GUICtrlSetBkColor($Label1, $GUI_BKCOLOR_TRANSPARENT)
    $PW_output = GuiCtrlCreateInput("",$Width - 50,$Height - 50,100,20)
    $SubmitButton = GUICtrlCreateButton("Anmelden",$Width - 50,$Height,100,20,$BS_DEFPUSHBUTTON)
    ; Mit defpushbuton kannst du die Passworteingabe auch mit Enter bestätigen
    $Label2 = GUICtrlCreateLabel("Falsches Passwort! Bitte versuchen Sie es erneut!",$Width - 50,$Height - 200,100,100)
    GUICtrlSetBkColor($Label2, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor($label2, 0xFF0000); Farbe des Labels auf Rot setzen
    GUICtrlSetState(-1, $GUI_HIDE); Label nicht anzeigen, statt $Label2 kannst du auch -1 verwenden wenn das Label das zuletzt erzeugte Control ist
    GUISetState(@SW_SHOW)

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

    For $i = 0 To 255
    WinSetTrans($Main, "", $i)
    ; die if abfrage gibt hier keinen sinn, Die for Schleife wird sowieso von 0 bis 255 ausgeführt
    Sleep(10)
    Next

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $SubmitButton
    CheckPW(GuictrlRead($PW_output))
    EndSwitch
    WEnd

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

    Func CheckPW($entry)
    If $entry == $ori_pw Then
    Exit
    Else
    GUICtrlSetState($Label2, $GUI_SHOW); Erst bei Fehleingabe das Label anzeigen
    EndIf
    EndFunc

    [/autoit]

    Wieso alle tastenkombinationen sperren? Das fenster ist doch sowieso immer oben auf.
    Gewisse Tastenkombinationen kann man auch nicht ohne weiteres sperren. Strg+Alt+Entfernen ist zum Beispiel von Windows reserviert.

  • naja Vielen Dank für die schnellen antworten
    is jedoch schade des es wohl nicht geht...