如何用Word VBA模拟键盘按键以防止机器进入闲置锁屏状态
用Word VBA模拟键盘按键防止机器锁屏
你的现有代码仅在Word文档内插入文本,属于应用内部操作,系统不会将其判定为用户交互行为,因此无法阻止锁屏。要实现目标,需调用Windows API模拟真实键盘按键,让系统识别为用户正在活动。
解决方案代码
先在VBA编辑器中右键点击项目→插入→模块,添加一个标准模块,再粘贴以下代码:
' 声明Windows API函数及常量 Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As LongPtr) Private Const KEYEVENTF_KEYUP = &H2 Private Const VK_SCROLL = &H91 ' Scroll Lock键的虚拟键码 Dim nextRunTime As Date ' 启动防锁屏任务 Sub StartAntiLock() ' 设置下一次执行时间(当前时间+60秒) nextRunTime = Now + TimeValue("00:01:00") ' 立即执行一次按键模拟 SimulateKeyPress ' 调度下一次执行 Application.OnTime nextRunTime, "StartAntiLock" End Sub ' 停止防锁屏任务 Sub StopAntiLock() On Error Resume Next ' 避免任务未运行时触发错误 Application.OnTime nextRunTime, "StartAntiLock", , False On Error GoTo 0 End Sub ' 模拟按键操作(选用Scroll Lock,无输入干扰) Private Sub SimulateKeyPress() ' 按下Scroll Lock键 keybd_event VK_SCROLL, 0, 0, 0 ' 松开Scroll Lock键 keybd_event VK_SCROLL, 0, KEYEVENTF_KEYUP, 0 End Sub
代码说明
- API调用:
keybd_event用于模拟键盘的按下/松开动作,VK_SCROLL是Scroll Lock键的虚拟键码,选这个键是因为它不会产生输入内容,也不会干扰当前操作。 - StartAntiLock:初始化定时任务,每60秒执行一次按键模拟,同时自动调度下一次执行。
- StopAntiLock:用于终止定时任务,避免关闭Word后任务仍在后台运行。
- SimulateKeyPress:完成一次完整的按键交互,系统会将其识别为用户活动,从而阻止锁屏。
使用方法
- 打开Word,按
Alt+F11打开VBA编辑器。 - 插入标准模块并粘贴代码。
- 运行
StartAntiLock子程序(可在编辑器中按F5,或给它添加自定义工具栏按钮)。 - 需要停止时,运行
StopAntiLock子程序即可。
注意事项
- 若使用32位Word,需将代码中的
PtrSafe改为Ptr,LongPtr改为Long。 - 可根据需求调整定时间隔,比如将
TimeValue("00:01:00")改为00:00:30即每30秒执行一次。 - 也可替换为其他虚拟键(如
VK_SHIFT),但Scroll Lock是最无干扰的选择。
内容的提问来源于stack exchange,提问作者Nosail
相关产品推荐
相关产品推荐

