本帖最后由 hlowld 于 2025-4-17 18:17 编辑
当运行系统优化脚本时,可能希望进入独占全屏状态,不允许用户进行操作,执行完成后才进入桌面允许用户操作。
系统安装的OOBE阶段和安装部分系统补丁时,就是这种状态。
搜了一圈没找到简单的方案,在deepseek帮助下用ahk基本实现了目标,分享出来,供有类似小众需求的同学借鉴。
改进一下,屏蔽更多的热键(无法屏蔽Ctrl+Alt+Del),支持启用缩放的显示器
;接受1或者2个参数
;第1个参数为想要运行的批处理的路径
;第2个参数(若有)为显示的文本消息,如果无参数2,则显示 请稍候...
#NoEnv
#SingleInstance Force
#Persistent
#InstallKeybdHook
#InstallMouseHook
SetBatchLines, -1
SetWinDelay, 0
SetControlDelay, 0
argc = %0%
if (argc < 1) { ; 如果没有参数
ExitApp
}
batPath = %1% ; 获取第一个参数
if (!FileExist(batPath)) {
ExitApp
}
msg := "请稍候..."
if (argc > 1) {
msg = %2%
}
Gui, +AlwaysOnTop +ToolWindow -Caption +Owner
Gui, Color, 009BFF ; 背景
textHeight := 100 ; 文本控件高度
dpi := A_ScreenDPI
hei := A_ScreenHeight * 96 // dpi
wid := A_ScreenWidth * 96 // dpi
yPos := (hei // 2) - (textHeight // 2)
Gui, Font, cWhite s42, Microsoft YaHei ; 白色、42号、微软雅黑字体
Gui, Add, Text, xCenter y%yPos% w%wid% h%textHeight% Center vWaitText, %msg%
Gui, Show, x0 y0 w%wid% h%hei%, FullScreenLock ; 显示全屏窗口
WinSet, Transparent, 255, FullScreenLock ; 确保不透明
DllCall("ShowCursor", "int", 0) ; 隐藏鼠标光标
; # win ! alt ^ ctrl + shift
Hotkey, Esc, Block ; 屏蔽系统热键
Hotkey, LShift, Block
Hotkey, RShift, Block
Hotkey, LCtrl, Block
Hotkey, RCtrl, Block
Hotkey, LAlt, Block
Hotkey, RAlt, Block
Hotkey, LWin, Block
Hotkey, RWin, Block
Hotkey, ^Esc, Block
Hotkey, ^+Esc, Block
Hotkey, !Tab, Block
Hotkey, #Tab, Block
Hotkey, !F4, Block
RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Policies\System, DisableLockWorkstation, 1
RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Policies\System, DisableTaskMgr, 1
Runwait, "%batPath%", , Hide ;运行批处理后退出
exitkoisk()
Esc::exitkoisk() ; 按Esc键退出
Block:
Return
exitkoisk(){
DllCall("ShowCursor", "int", 1)
Hotkey, Esc, Off ; 恢复系统热键
Hotkey, LShift, Off
Hotkey, RShift, Off
Hotkey, LCtrl, Off
Hotkey, RCtrl, Off
Hotkey, LAlt, Off
Hotkey, RAlt, Off
Hotkey, LWin, Off
Hotkey, RWin, Off
Hotkey, ^Esc, Off
Hotkey, ^+Esc, Off
Hotkey, !Tab, Off
Hotkey, #Tab, Off
Hotkey, !F4, Off
RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Policies\System, DisableLockWorkstation, 0
RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Policies\System, DisableTaskMgr, 0
Gui, Destroy
ExitApp
}
|