原创:挂机锁ahk脚本

为了拦截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()*/

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注