You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过键盘/宏键盘(Arduino Leonardo)发送SendMessage指令让显示器休眠

实现方案说明

Arduino Leonardo 本身只能模拟USB键盘/鼠标输入,无法直接向Windows系统发送系统消息,对你来说门槛最低的方案是通过Leonardo模拟触发一组冷门快捷键,再用你已经调试好的AHK脚本监听这组快捷键执行休眠逻辑,全程只需要简单修改几行现成代码即可。


第一步:修改现有AHK脚本

把你原有AHK脚本的触发按键换成几乎不会日常用到的组合键,比如Ctrl+Shift+F12,修改示例如下:

; 把原来的触发按键比如a::替换成下面这行,^对应Ctrl、+对应Shift
^+F12::
SendMessage, 0x112, 0xF170, 2, , Program Manager
return

修改完成后保存运行脚本,脚本会在后台自动监听快捷键触发。如果需要开机自动运行,给脚本创建快捷方式,Win+R输入shell:startup回车打开启动文件夹,把快捷方式放进去即可。


第二步:Arduino Leonardo 代码&接线

你只需要准备1个普通轻触按键,接线规则:按键一端接Leonardo的D2引脚,另一端接GND,不需要额外接电阻。
直接复制下面的代码到Arduino IDE,烧录到开发板即可:

#include "Keyboard.h"
// 如果你把按键接了其他引脚,修改下面的数字即可
const int buttonPin = 2;
int lastButtonState = HIGH;

void setup() {
  pinMode(buttonPin, INPUT_PULLUP);
  Keyboard.begin();
}

void loop() {
  int currentState = digitalRead(buttonPin);
  // 检测按键按下,自动消抖避免误触发
  if (currentState == LOW && lastButtonState == HIGH) {
    delay(10);
    if (digitalRead(buttonPin) == LOW) {
      // 发送和AHK对应匹配的快捷键Ctrl+Shift+F12
      Keyboard.press(KEY_LEFT_CTRL);
      Keyboard.press(KEY_LEFT_SHIFT);
      Keyboard.press(KEY_F12);
      delay(100);
      Keyboard.releaseAll();
      // 等待按键松开避免重复触发
      while(digitalRead(buttonPin) == LOW) {
        delay(10);
      }
    }
  }
  lastButtonState = currentState;
  delay(10);
}

烧录时开发板选择Arduino Leonardo,端口选设备管理器里对应的COM端口即可。烧录完成后按动按键,就能直接触发显示器休眠。

内容的提问来源于stack exchange,提问作者Eeglis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:57:03