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

如何让AutoHotkey脚本实时获取Windows剪贴板最新内容?

解决AutoHotkey剪贴板内容不更新的问题

你的脚本问题在于:每次触发快捷键时,%Clipboard%是在添加编辑框控件的瞬间读取的旧值,没有实时获取最新剪贴板内容;另外重复按快捷键会创建多个独立GUI窗口,不符合使用习惯。

下面提供两种针对性解决方案:

方案1:打开GUI时加载当前剪贴板内容

适合仅需要打开窗口时显示最新剪贴板,不需要实时更新的场景:

<^>!x:: ; AltGr + x
    ; 检查窗口是否已存在,存在则激活并更新内容
    IfWinExist, 剪贴板查看器
    {
        WinActivate
        ClipWait, 0 ; 确保读取最新剪贴板内容
        GuiControl,, Edit1, %Clipboard%
        Return
    }
    ; 不存在则创建新窗口
    Gui +Resize +MinSize300x200
    Gui, Add, Edit, vEdit1, %Clipboard% ; 给编辑框命名,方便后续更新
    Gui, Show,, 剪贴板查看器
    Return

GuiClose:
    Gui, Destroy ; 关闭时销毁窗口
    Return

方案2:实时监听剪贴板变化,动态更新编辑框

适合窗口打开后,剪贴板内容变化时自动同步更新的场景:

<^>!x:: ; AltGr + x
    IfWinExist, 剪贴板查看器
    {
        WinActivate
        Return
    }
    Gui +Resize +MinSize300x200
    Gui, Add, Edit, vEdit1, %Clipboard%
    Gui, Show,, 剪贴板查看器
    OnClipboardChange("ClipboardUpdated") ; 注册剪贴板变化监听
    Return

ClipboardUpdated(Type) {
    ; 仅当窗口存在时更新内容
    IfWinExist, 剪贴板查看器
    {
        ClipWait, 0
        GuiControl,, Edit1, %Clipboard%
    }
    Else
    {
        OnClipboardChange("") ; 窗口关闭后取消监听
    }
}

GuiClose:
    OnClipboardChange("") ; 关闭窗口时取消监听
    Gui, Destroy
    Return

关键修改说明

  • 给GUI窗口和编辑框命名,方便后续激活窗口、更新控件内容
  • 使用ClipWait, 0确保读取的是最新剪贴板内容,避免复制操作未完成时读取旧值
  • 方案2通过OnClipboardChange注册回调函数,实现剪贴板内容变化时自动同步
  • 关闭窗口时销毁控件并取消监听,避免不必要的资源占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:05:24