Eingaben sperren bis auf Inputbox

  • Für was brauchst du dann die Inputbox wenn man eh nix eingeben kann?

    Und kurze nebenfrage: Für was brauchst du das? Etwas dazu erklären evtl?

  • Die Inputbox soll eine Passworteingabe sein und man muss das Passwort ja irgendwie eingeben können.

    edit:
    Um meinen PC zu sperren und nur zugänglich zu machen, wenn man das richtige Passwort eingibt.

  • Aha ... also in deinem Fenster soll quasi keine anderen eingaben möglich sein. Habs verstanden

    Also ich kann dir sagen wie du andere Controls de- / aktivierst. Aber die Maus und Tastatur komplett sperren für die anderen Controls? Keine Ahnung^^

    Control deaktivieren: ControlDisable

    Control aktivieren: ControlEnable

    Es gibt BlockInput ... allerdings blockt es da alles. Also keine eingabe mehr möglich, egal in welchem Input / control. Allerdings geht es über strg + alt + entf wieder aufzuheben.

    Einmal editiert, zuletzt von Prixma (22. Dezember 2010 um 15:14)

  • Leg einfach ne GUI über dein kompletten Monitor und setzt diese dauerhaft ontop und sperr den TaskManager

    • Offizieller Beitrag

    Hier eine Lösung. Solange das Fenster aktiv ist funktioniert die Tastatur. Will man tricksen und z.B. mit Alt+Tab rausspringen, so geht das - aber hinterher ist keine Tastatureingabe mehr möglich. :D
    Die Maus ist im Eingabefenster gefangen. Durch den Popup-Style läßt sich dieses auch nicht verschieben.

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #Include <Misc.au3>

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

    OnAutoItExitRegister('OnAutoItExit')

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

    Opt('MustDeclareVars', 1)
    Global $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
    Global $hmod = _WinAPI_GetModuleHandle(0)
    Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
    Global $active = False

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

    Global $gui
    _Main()

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

    Func _Main()
    Local $input, $btn, $pos, $sRead, $sPass = 'Passwort'
    $gui = GUICreate('Passwort Eingabe', 180, 70, -1, -1, $WS_POPUP)
    $input = GUICtrlCreateInput('', 10, 10, 160, 20)
    $btn = GUICtrlCreateButton('OK', 10, 40, 40, 20)
    GUISetState()

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

    $pos = WinGetPos($gui)
    _MouseTrap($pos[0], $pos[1], $pos[0] + $pos[2], $pos[1] + $pos[3])

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

    While 1
    If BitAND(WinGetState($gui), 8) Then
    $active = True
    Else
    $active = False
    EndIf
    Switch GUIGetMsg()
    Case $btn
    $sRead = GUICtrlRead($input)
    If $sRead == $sPass Then
    _Exit()
    Else
    GUICtrlSetData($input, '')
    EndIf
    EndSwitch
    WEnd
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

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

    ;===========================================================
    ; callback function
    ;===========================================================
    Func _KeyProc($nCode, $wParam, $lParam)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    If Not $active Then Return -1 ; Tastatureingabe außerhalb Input unmöglich
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndFunc

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

    Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_KeyProc)
    EndFunc

    [/autoit]
  • bei mir funktioniert das mit dem blockieren der tasten wenn das fenster inaktiv ist nicht

    liegt es daran dass ich windows 7 hab und du (wie man deiner signatur entnehmen kann :D ) XP?