Bildschirm mit GUI sperren

  • Hey,
    Ich will eine Art Internet Café Programm bauen.
    Dazu will ich eine Bildschirmgroße GUI machen, die sich nicht verschieben lässt. Die Taskleiste unten muss ach überdeckt werden. Externe Programme sollen nicht angezeigt werden, es sei den sie werden von dem Programm selbst gestartet werden(Spiele bzw Firefox oder so)..
    Wie Krieg ich das am besten hin?
    MfG

  • Such dir die Fenster-Klassen der Taskleiste per AutoitWindowInfo raus, setz sie auf $GUI_HIDE, dann mach per $WS_POPUP mit @DesktopWidth und @DesktopHeight ein "Vollbild"-Fenster.
    Anschließend in eine Endlosschleife packen: wenn WingetTitle("[active]") <> "Titel deines Programms", dann WinSetOnTop("Titel deines Programms", 1) und WinActivate("Titel deines Programms"). Ebenso: wenn ProcessExists("taskmgr.exe"), dann ProcessKill("taskmgr.exe") und halt noch deine ganzen Sondernbedingungen.

    [autoit]


    Func Ulam($n)
    Return 1
    EndFunc

    [/autoit]


    Rekursion FTW :D

  • Es gab mal ein richtig guten Autoitscript das genau das gemacht hat. Alles blockiert einschließlich Strg+Alt+Entf und mit Passworteingabefeld. Finde es aber einfach nichtmehr.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Was dir auch nützen könnte:

    Windowstaste sperren
    [autoit]

    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    wintastesperren()

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

    #region wintaste
    Func wintastesperren()

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

    Global $hHookKeyboard, $pStub_KeyProc
    Global Const $VK_WIN_LEFT = 0x5B
    Global Const $VK_WIN_RIGHT = 0x5C
    Global Const $Key_NONE = 0x0

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

    HotKeySet("!e", "OnAutoITExit") ; Exit Alt+e

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/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)

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

    MsgBox(64, "", "Die Windowstaste wurde erfolgreich gesperrt. Per [Alt] und [E] wird sie wieder freigegeben.")

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

    While 1
    Sleep(10)
    WEnd

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

    EndFunc ;Wintastensperre

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

    Func OnAutoITExit()
    DllCallbackFree($pStub_KeyProc)
    _WinAPI_UnhookWindowsHookEx($hHookKeyboard)
    MsgBox(64, "", "Die Windowstaste wurde erfolgreich freigegeben.")
    Exit
    EndFunc ; OnAutoITExit

    [/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")
    If ($wParam = $WM_KEYDOWN) And ($vkCode = $VK_WIN_LEFT Or $vkCode = $VK_WIN_RIGHT) Then
    DllCall('user32.dll', 'int', 'keybd_event', 'int', $Key_NONE, 'int', 0, 'int', 0, 'ptr', 0)
    Return -1
    EndIf
    Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
    EndFunc ; _KeyProc
    #endregion wintaste

    [/autoit]


    (Stammt nicht von mir)

    Einträge im Securite Screen entfernen (benötigt Adminrechte)
    [autoit]

    ; Einträge im Securite Screen werden entfernt
    RegWrite('HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System','HideFastUserSwitching', 'REG_DWORD', '1')
    RegWrite('HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System','DisableLockWorkstation', 'REG_DWORD', '1')
    RegWrite('HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer','NoLogoff', 'REG_DWORD', '1')
    RegWrite('HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System','DisableChangePassword', 'REG_DWORD', '1')
    RegWrite('HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System','DisableTaskMgr', 'REG_DWORD', '1')

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

    ; Einträge im Securite Screen werden hinzugfügt
    RegWrite('HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System','HideFastUserSwitching', 'REG_DWORD', '0')
    RegWrite('HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System','DisableLockWorkstation', 'REG_DWORD', '0')
    RegWrite('HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer','NoLogoff', 'REG_DWORD', '0')
    RegWrite('HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System','DisableChangePassword', 'REG_DWORD', '0')
    RegWrite('HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System','DisableTaskMgr', 'REG_DWORD', '0')

    [/autoit]
    Taskleiste ausblenden
    [autoit]

    ; ausblenden
    WinSetState("[Class:Shell_TrayWnd]","",@SW_HIDE)
    WinSetState("Start","",@SW_HIDE)

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

    ; einblenden
    WinSetState("[Class:Shell_TrayWnd]","",@SW_SHOW)
    WinSetState("Start","",@SW_SHOW)

    [/autoit]