Hochzeit zweier .au3-Dateien

  • Hallo, ich bitte um Hilfe.
    ich möchte 2 Dateien, wobei ich gestehen muss, das die 2te nicht von mir ist, zusammen fügen.

    Datei 1 = Eine Passwortabfrage über eine Ini-Datei die auf dem Desktop (@DesktopDir & "\TestGUI.ini", "section", "key", 0)

    Datei 2 = diese Sperrt ohne Ausweg Tastatur und Maus!!!

    Da weder die eine noch die andere allein von großem nutzen ist, möchte ich diese zusammenführen.
    Ich habe mir Gedacht, das es möglich wäre, alle eingaben (Maus/Tastatur zu Blocken und nur in dem Passworteingabefenster Aktiv zu halten,
    so das man das Gewählte Kennwort eingeben kann und mehr nicht.
    Und nein, ich möchte kein Joke-Programm o.ä. Gestalten, ich möchte meinen PC und Dektop auf meine Weise vor fremden zugriff Schützen und Befehle von AutoIt verstehen.
    könnte mir Jemand Beispiele Demonstrieren oder mir einfacheren Weg vorschlagen?

  • Also um 2. AutoIt-Dateien zusammenzuführen gibt es #include. Und sonst kopierst du einfach den Inhalt der einen in die andere. Ich vermute jetzt aber mal, dass das nicht das ist was du suchst. Wäre dann wohl ein bisschen zu einfach.

    Gruss Shadowigor

  • Hi,

    erstmal: Ich gratuliere dem Paar! :D

    Suchst du eine Lösung in dieser Richtung?

    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <GuiConstantsEx.au3>
    #include <EditConstants.au3>
    #include <Misc.au3>

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

    ;Opt("TrayIconHide", 1)
    ;Opt("WinTitleMatchMode", 2)
    OnAutoItExitRegister("_Exit")
    $user_dll = DllOpen("user32.dll")

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

    $Passwort = IniRead(@DesktopDir & "\TestGUI.ini", "section", "key", 0)

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

    $GUI = GUICreate("TestGUI", 205, 60, 5, 5,"","")
    $Input1 = GUICtrlCreateInput("", 5, 5, 190, 20, $ES_PASSWORD)
    GUISetState()

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

    $pStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")
    $hHookKeyboard = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($pStub_KeyProc), _WinAPI_GetModuleHandle(0), 0)
    _Main()

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

    Func _Main()

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

    Local $GUI, $coords[4]

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

    Do
    $coords = WinGetPos($GUI)
    _MouseTrap($coords[0], $coords[1], $coords[0] + $coords[2], $coords[1] + $coords[3])
    Until GUICtrlRead($Input1) = $Passwort
    _MouseTrap()
    EndFunc

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

    Func _KeyProc($nCode, $wParam, $lParam)

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

    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
    Local $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
    Local $vkCode = DllStructGetData($tKEYHOOKS, "vkCode")

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

    If ($wParam = $WM_KEYDOWN) And $vkCode <> 0x77 Then
    DllCall($user_dll, 'int', 'keybd_event', 'int', 0x0, 'int', 0, 'int', 0, 'ptr', 0)
    Return -1
    EndIf
    Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

    Um das nun auftretende Problem mit der Möglichkeit der Eingabe des Passworts zu bewältigen, würde ich dir vorschlagen, mit dem Fokus zu arbeiten.
    Wenn das Inputfeld den Fokus hat, ist eine Eingabe möglich, ansonsten eben nicht.

    Hoffe, ich konnte helfen,

    Gruß stay

  • :D ich bin auch Stolz auf die Beiden :P

    Danke Dir Stayawayknight, genau soetwas suche ich, nur leider weiß ich nicht wie ich den Focus setzen soll.

    ich würde mit

    [autoit]

    ;...
    $GUI = GUICreate("TestGUI", 205, 60, 5, 5,"","")
    $Input1 = GUICtrlCreateInput("", 5, 5, 190, 20, $ES_PASSWORD)
    _WinAPI_SetFocus($Input)
    GUISetState()
    ;...

    [/autoit]

    Arbeiten nur leider bringt das in meinem Versuch nix.

    Genauso wie den Versuch wie Folgt zu schreiben

    [autoit]

    ;...
    $GUI = GUICreate("TestGUI", 205, 60, 5, 5,"","")
    $Input1 = GUICtrlCreateInput("", 5, 5, 190, 20, $ES_PASSWORD)
    GUICtrlSetState(-1,$GUI_FOCUS)
    GUISetState()
    ;...

    [/autoit]

    was mach ich Falsch? oder hab ich das Problem mit dem Focus noch nicht verstanden?

  • Ich glaube stay meinte das so mit dem Focus.

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <GuiConstantsEx.au3>
    #include <EditConstants.au3>
    #include <Misc.au3>

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

    ;Opt("TrayIconHide", 1)
    ;Opt("WinTitleMatchMode", 2)
    OnAutoItExitRegister("_Exit")
    $user_dll = DllOpen("user32.dll")

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

    $Passwort = "test"

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

    $GUI = GUICreate("TestGUI", 205, 60, 5, 5,"","")
    $Input1 = GUICtrlCreateInput("", 5, 5, 190, 20, $ES_PASSWORD)
    GUISetState()

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

    $pStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")
    $hHookKeyboard = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($pStub_KeyProc), _WinAPI_GetModuleHandle(0), 0)
    _Main()

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

    Func _Main()

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

    Local $GUI, $coords[4]

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

    Do
    $coords = WinGetPos($GUI)
    _MouseTrap($coords[0], $coords[1], $coords[0] + $coords[2], $coords[1] + $coords[3])
    Until GUICtrlRead($Input1) = $Passwort
    _MouseTrap()
    EndFunc

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

    Func _KeyProc($nCode, $wParam, $lParam)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
    Local $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
    Local $vkCode = DllStructGetData($tKEYHOOKS, "vkCode")

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

    If $wParam = $WM_KEYDOWN And _WinAPI_GetDlgCtrlID(ControlGetHandle($GUI, "", "[CLASSNN:" & ControlGetFocus($GUI) & "]")) <> $Input1 Then
    DllCall($user_dll, 'int', 'keybd_event', 'int', 0x0, 'int', 0, 'int', 0, 'ptr', 0)
    Return -1
    EndIf

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

    Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]
  • Super, danke, genau so, wollte ich das ich habe es nur noch etwas geändert weil mir auf gefallen ist, das, sobald ein anderes Fenster im Vordergrund steht die Maus in diesem sdann Quasi gefangen ist. oder beim drücken der Windowstaste sich die maus auf der Startleiste bewegen lässt

    [autoit]

    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <GuiConstantsEx.au3>
    #include <EditConstants.au3>
    #include <Misc.au3>

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

    ;Opt("TrayIconHide", 1)
    ;Opt("WinTitleMatchMode", 2)
    OnAutoItExitRegister("_Exit")
    $user_dll = DllOpen("user32.dll")

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

    $Passwort = IniRead(@DesktopDir & "\TestGUI.ini", "section", "key", 0)

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

    $GUI = GUICreate("TestGUI", 205, 60, 5, 5,"","")
    $Input1 = GUICtrlCreateInput("", 5, 5, 190, 20, $ES_PASSWORD)
    GUISetState()

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

    $pStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")
    $hHookKeyboard = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($pStub_KeyProc), _WinAPI_GetModuleHandle(0), 0)
    _Main()

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

    Func _Main()

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

    Local $GUI, $coords[4]

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

    Do
    $coords = WinGetPos($GUI)
    ;_MouseTrap($coords[0], $coords[1], $coords[0] + $coords[2], $coords[1] + $coords[3])
    _MouseTrap($coords); <-
    Until GUICtrlRead($Input1) = $Passwort
    _MouseTrap()
    Exit
    EndFunc

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

    Func _KeyProc($nCode, $wParam, $lParam)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
    Local $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
    Local $vkCode = DllStructGetData($tKEYHOOKS, "vkCode")

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

    If $wParam = $WM_KEYDOWN And _WinAPI_GetDlgCtrlID(ControlGetHandle($GUI, "", "[CLASSNN:" & ControlGetFocus($GUI) & "]")) <> $Input1 Then
    DllCall($user_dll, 'int', 'keybd_event', 'int', 0x0, 'int', 0, 'int', 0, 'ptr', 0)
    Return -1
    EndIf

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

    Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]