; ----------------------------------------------------------------------------
; Screen Lock
;
; AutoIt Version: 3.2.0.1
; Author: Hallman \ CWorks
;
; HotKeys
; F9 = Close program
; F10 = Change password
; F11 = Enable ScreenLock
;
; ----------------------------------------------------------------------------
#include <guiconstants.au3>
#include <string.au3>
Opt("TrayMenuMode",1)
Dim $Atempts = 0
Dim $Lock = 0
Dim $PassInput = ""
Dim $Label
Dim $ScreenyWindow = ""
Dim $PassWindow = ""
$Show_Controls_Timer = TimerInit()
$Controls_Shown = 0
$PassWord = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Andy\ScreenLock", "Password")
If $PassWord <> "" Then
$PassWord = _StringEncrypt(0, $PassWord, "4471")
Else
Pass()
EndIf
Lock()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE And $Lock = 0
Exit
Case $msg = $PassInput
If GUICtrlRead($PassInput) == $PassWord Then
Lock()
MsgBox(0, "Atempts", "An incorrect password was entered " & $Atempts & " time(s).")
$Atempts = 0
Else
$Atempts += 1
SplashMsg("Error", "Invalid Password", 220, 100)
EndIf
Case $msg = $GUI_EVENT_PRIMARYUP And $Lock = 1
GUISetState(@SW_SHOW, $PassWindow)
$Controls_Shown = 1
$Show_Controls_Timer = TimerInit()
EndSelect
If TimerDiff($Show_Controls_Timer) > 10000 And $Controls_Shown = 1 Then
GUISetState(@SW_HIDE, $PassWindow)
$Controls_Shown = 0
EndIf
If WinExists("Windows Task Manager") And $Lock = 1 Then
WinClose("Windows Task Manager")
WinKill("Windows Task Manager")
EndIf
If WinActive($ScreenyWindow) = 0 And WinActive($PassWindow) = 0 And $Lock = 1 Then
WinActivate($ScreenyWindow)
EndIf
If Not BitAND(WinGetState($ScreenyWindow, ""), 2) = 1 And $Lock = 1 Then
GUISetState(@SW_SHOW)
EndIf
If $Lock = 1 And WinExists($ScreenyWindow) = 0 Then
$ScreenyWindow = GUICreate("", @DesktopWidth, @DesktopHeight, -2, -2, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW)
GUISwitch($ScreenyWindow)
WinSetTrans($ScreenyWindow, "", 1)
GUISetState(@SW_SHOW, $ScreenyWindow)
WinSetOnTop($ScreenyWindow, "", 1)
WinSetOnTop($PassWindow, "", 1)
EndIf
WEnd
Func Lock()
If $Lock = 0 Then
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr", "REG_DWORD", 00000001)
HotKeySet("{F9}")
HotKeySet("{F10}")
HotKeySet("{F11}")
; HotKeySet("^!p") ;Ctrl-Alt-p
; HotKeySet("^!l") ;Ctrl-Alt-l
TraySetIcon("Shell32.dll", 47)
$ScreenyWindow = GUICreate("", @DesktopWidth + 2, @DesktopHeight + 2, -2, -2, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW)
GUISwitch($ScreenyWindow)
WinSetTrans($ScreenyWindow, "", 1)
Global $PassWindow = GUICreate("", 220, 80, -1, -1, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW)
GUISwitch($PassWindow)
GUISetState(@SW_HIDE)
Global $Label = GUICtrlCreateLabel("The screen has been locked.", 10, 10, -1, 15)
; GUICtrlSetColor(-1,0xff0000)
Global $PassInput = GUICtrlCreateInput("Password", 10, 30, 200, 20, $ES_PASSWORD)
Global $Label2 = GUICtrlCreateLabel("Type Password and hit Enter", 10, 55, -1, 15)
; GUICtrlSetColor(-1,0xff0000)
GUISetState(@SW_SHOW, $ScreenyWindow)
WinSetOnTop($ScreenyWindow, "", 1)
WinSetOnTop($PassWindow, "", 1)
$Lock = 1
Else
GUIDelete($ScreenyWindow)
GUIDelete($PassWindow)
HotKeySet("{F9}", "close")
HotKeySet("{F10}", "Pass")
HotKeySet("{F11}", "Lock")
; HotKeySet("^!p", "Pass") ;Ctrl-Alt-p
; HotKeySet("^!l", "Lock") ;Ctrl-Alt-l
TraySetIcon("Shell32.dll", 44)
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr", "REG_DWORD", 00000000)
$Lock = 0
EndIf
EndFunc ;==>Lock
Func Pass()
$PassWord = InputBox("Create Password", "Enter your password", "", "", 100, 100)
If $PassWord = "" Then
MsgBox(16, "error", "Invalid password.")
Pass()
Else
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Andy\ScreenLock", "Password", "REG_SZ", _StringEncrypt(1, $PassWord, "4471"))
EndIf
EndFunc ;==>Pass
Func SplashMsg($S_Title = "", $S_Text = "", $S_Size_X = 300, $S_Size_Y = 300)
SplashTextOn($S_Title, $S_Text & @CRLF & "Press Enter to close this window.", $S_Size_X, $S_Size_Y)
HotKeySet("{ENTER}", "OffSplash")
EndFunc ;==>SplashMsg
Func OffSplash()
SplashOff()
HotKeySet("{ENTER}")
EndFunc ;==>OffSplash
Func close()
Exit
EndFunc ;==>close