Tải bản đầy đủ (.pdf) (9 trang)

Tài liệu Programming Discussion p1 docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (131.93 KB, 9 trang )

Khoá màn hình và yêu cầu mật khẩu khi muốn trở lại màn hình làm việc

Code:
; ----------------------------------------------------------------------------
; 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\Pol
icies\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\Pol
icies\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


Khoá và Mở máy tính của bạn bằng USB

Đây là đoạn mã hoàn thiện của PC Lock và hoạt động có vẻ rất tốt. Nó sẽ tự động khoá
nếu bạn khởi động lại máy tính.
Tập tin "lock.exe" đặt trong đĩa mềm hoặc USB nhưng tốt nhất là USB và chạy tập tin
đó.

Đoạn mã đầu tiên là "lock.au3"
Code:

#include<guiconstants.au3>
#include<file.au3>
#include<misc.au3>

filedelete("C:\locksearch.exe")

fileinstall("locksearch.exe","C:\locksearch.exe")

FileCreateShortcut("C:\locksearch.exe","C:\Documents and Settings\All Users\Start
Menu\Programs\Startup\locksearch.ink")

if not ProcessExists("locksearch.exe") then run ("c:\locksearch.exe")

Opt("WinTitleMatchMode", 4)
Opt("OnExitFunc")
Opt("TrayAutoPause",0)

$hwnd = WinGetHandle("classname=Progman")
$user32 = DllOpen("user32.dll")
Global Const $lciWM_SYSCommand = 274
Global Const $lciSC_MonitorPower = 61808
Global Const $lciPower_Off = 2
Global Const $lciPower_On = -1
global $scriptfullpath = @ScriptFullPath
global $drive = StringLeft($scriptfullpath, 2) & "\"

if regread("HKEY_LOCAL_MACHINE\SOFTWARE\XLock","Status") = 1 then
$scriptfullpath = regread("HKEY_LOCAL_MACHINE\SOFTWARE\XLock","Path")
global $code = regread("HKEY_LOCAL_MACHINE\SOFTWARE\XLock","Code")
$drive = StringLeft($scriptfullpath, 2) & "\"

Else
global $code = _DriveInfo($drive)
EndIf

×