如何在Windows系统下反转NumLock指示灯的状态?
如何在Windows系统下反转NumLock指示灯的状态?
我完全懂你的痛点——NumLock常开时那个亮得没法调暗的指示灯确实恼人,想让它状态反转(NumLock关闭时灯亮、开启时灯灭),用软件方法就能实现,下面给你几种靠谱的方案:
方案一:AutoHotkey脚本(最直观易用)
AutoHotkey是Windows上免费的自动化工具,用它写个小脚本就能轻松实现需求:
- 先安装AutoHotkey(直接去官网下载安装即可,是很成熟的工具)
- 右键新建一个文本文件,把后缀改成
.ahk,打开后粘贴以下代码:
#Persistent SetTimer, ToggleNumLockLED, 300 ; 每300毫秒检查一次状态,确保同步 ToggleNumLockLED: currentState := GetKeyState("NumLock", "T") ; 获取NumLock的实际功能状态 ; 反转指示灯:先通过切换NumLock改变灯的显示,再切回恢复原功能 if (currentState = 1) { SetNumLockState, Off Send {NumLock} } else { SetNumLockState, On Send {NumLock} } return
- 保存后双击运行脚本,它会在后台悄悄工作,你就能看到NumLock的指示灯状态和实际功能反转了。如果想开机自动运行,把这个脚本文件拖到「启动」文件夹即可(按Win+R输入
shell:startup就能打开)。
方案二:PowerShell脚本+任务计划(纯系统工具实现)
如果你不想装第三方工具,用Windows自带的PowerShell也能实现,步骤稍复杂但完全依赖系统自带功能:
- 新建一个PowerShell脚本文件(后缀
.ps1),内容如下:
Add-Type @" using System; using System.Runtime.InteropServices; public class Keyboard { [DllImport("user32.dll")] public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo); } "@ # NumLock的虚拟键码是0x90 $numLockKey = 0x90 $keyDown = 0x0000 $keyUp = 0x0002 # 获取当前NumLock的实际功能状态 $currentState = [Console]::NumberLock # 反转指示灯:先切换NumLock改变灯状态,再切回恢复原功能 if ($currentState) { [Keyboard]::keybd_event($numLockKey, 0, $keyDown, [UIntPtr]::Zero) [Keyboard]::keybd_event($numLockKey, 0, $keyUp, [UIntPtr]::Zero) Start-Sleep -Milliseconds 50 [Keyboard]::keybd_event($numLockKey, 0, $keyDown, [UIntPtr]::Zero) [Keyboard]::keybd_event($numLockKey, 0, $keyUp, [UIntPtr]::Zero) } else { [Keyboard]::keybd_event($numLockKey, 0, $keyDown, [UIntPtr]::Zero) [Keyboard]::keybd_event($numLockKey, 0, $keyUp, [UIntPtr]::Zero) Start-Sleep -Milliseconds 50 [Keyboard]::keybd_event($numLockKey, 0, $keyDown, [UIntPtr]::Zero) [Keyboard]::keybd_event($numLockKey, 0, $keyUp, [UIntPtr]::Zero) }
- 打开「任务计划程序」,创建一个新任务:
- 触发器:选择「登录时」,再添加一个「重复任务」,设置每1分钟重复一次(确保状态同步)
- 操作:选择「启动程序」,程序或脚本选
powershell.exe,添加参数-ExecutionPolicy Bypass -File "你的脚本文件完整路径.ps1" - 设置:勾选「不管用户是否登录都要运行」,并开启「允许最高权限运行」
- 保存任务后,下次登录系统时脚本就会自动运行,定时同步指示灯的反转状态。
小提醒
- AutoHotkey脚本运行时会在系统托盘显示小图标,右键可暂停或退出
- PowerShell脚本如果遇到权限问题,管理员身份打开PowerShell输入
Set-ExecutionPolicy RemoteSigned即可解除限制
备注:内容来源于stack exchange,提问作者danliukuri
相关产品推荐
相关产品推荐

