为了拦截ctrl+alt+del,需使用管理员权限
/*; ==============================================================================
; 挂机锁
; 特点:原生拦截 Win/Alt+Tab、注册表禁用任务管理器、图片自动轮播
; ==============================================================================
#Requires AutoHotkey v2.0
#SingleInstance Force
; — 1. 自动请求管理员权限 (修改注册表必备) —
if !A_IsAdmin {
try {
Run(‘*RunAs “‘ . A_ScriptFullPath . ‘”‘)
}
ExitApp()
}
; — 2. 配置参数 —
global Password := “123” ; 解锁密码
global ImageDir := “x:\img” ; 图片文件夹路径 (请确保路径存在)
global ChangeInterval := 5000 ; 图片切换间隔 (5000毫秒 = 5秒)
global IsLocked := false
; — 3. 禁用任务管理器 (修改注册表) —
SetTaskManager(state) {
; state 为 1 禁用,为 0 启用
try {
RegWrite(state, “REG_DWORD”, “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System”, “DisableTaskMgr”)
} catch {
; 如果路径不存在则创建
try {
RegWrite(state, “REG_DWORD”, “HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System”, “DisableTaskMgr”)
}
}
}
; — 4. 构建 UI 界面 —
MyGui := Gui(“+AlwaysOnTop -Caption +LastFound”, “SecureLockScreen”)
MyGui.BackColor := “000000”
; 创建图片控件 (置于底层)
PicControl := MyGui.Add(“Pic”, “x0 y0 w” . A_ScreenWidth . ” h” . A_ScreenHeight . ” +0x4000000″)
; 创建半透明遮罩装饰框 (让输入区更清晰)
MyGui.SetFont(“s28 c00FF00”, “Microsoft YaHei”)
MyGui.Add(“Text”, “x0 y150 w” . A_ScreenWidth . ” Center +BackgroundTrans”, “🔒 SYSTEM LOCKED”)
; 密码输入框
MyGui.SetFont(“s20 cFFFFFF”, “Consolas”)
PassEdit := MyGui.Add(“Edit”, “vPass x” . (A_ScreenWidth//2 – 150) . ” y350 w300 h45 Password Center”)
; 解锁按钮
MyGui.SetFont(“s14 cFFFFFF”, “Microsoft YaHei”)
BtnUnlock := MyGui.Add(“Button”, “Default x” . (A_ScreenWidth//2 – 75) . ” y430 w150 h50″, “解 除 锁 定”)
BtnUnlock.OnEvent(“Click”, CheckPass)
; — 5. 核心逻辑函数 —
StartLock() {
global IsLocked := true
global ImageList := []
; 锁定系统功能
SetTaskManager(1)
; 扫描图片文件夹
if DirExist(ImageDir) {
loop Files, ImageDir “\*.*” {
if InStr(“.jpg.png.bmp.jpeg.gif”, A_LoopFileExt)
ImageList.Push(A_LoopFileFullPath)
}
}
; 显示界面
MyGui.Show(“x0 y0 w” . A_ScreenWidth . ” h” . A_ScreenHeight)
; 启动图片轮播
if ImageList.Length > 0
SetTimer(NextImage, ChangeInterval)
; 强制抓取焦点
PassEdit.Focus()
}
NextImage() {
static Index := 0
global ImageList, PicControl
if ImageList.Length = 0
return
Index := Mod(Index, ImageList.Length) + 1
PicControl.Value := ImageList[Index]
}
CheckPass(*) {
Saved := MyGui.Submit(false)
if Saved.Pass = Password {
Unlock()
} else {
ToolTip(“密码错误!”)
SetTimer () => ToolTip(), -2000
PassEdit.Value := “”
PassEdit.Focus()
}
}
Unlock() {
global IsLocked := false
SetTaskManager(0) ; 恢复任务管理器
SetTimer(NextImage, 0) ; 停止轮播
MyGui.Hide()
MsgBox(“系统已解锁”, “提示”, “Iconi T2”)
ExitApp()
}
; — 6. 原生按键拦截 (AHK 核心优势) —
#HotIf IsLocked
LWin::return ; 屏蔽左 Win
RWin::return ; 屏蔽右 Win
!Tab::return ; 屏蔽 Alt+Tab
!F4::return ; 屏蔽 Alt+F4
^Esc::return ; 屏蔽 Ctrl+Esc
!Esc::return ; 屏蔽 Alt+Esc
#HotIf
; 执行锁定
StartLock()*/
发表回复