在Auto Hot Key中实现将最近两次复制内容分配给变量
解决AHK双剪贴板内容拼接问题
你的核心问题是没有正确记录两次复制的剪贴板内容:原代码仅在脚本启动时读取一次剪贴板到clip1,后续剪贴板更新不会同步,且clip2未定义。以下是实现需求的完整方案:
实现思路
通过监听剪贴板变化,自动保存前一次复制的内容和当前复制的内容,触发热字符串时直接调用这两个变量拼接格式文本。
完整代码
; 初始化存储变量 prevClip := "" currentClip := "" ; 监听剪贴板变化,自动更新存储变量 OnClipboardChange("ClipboardChanged") ; 热字符串触发输出 :C:etitle:: ; 检查是否有两次复制的内容 if (prevClip != "" && currentClip != "") { SendInput, Text [%prevClip%] - %currentClip% } else { ; 提示未完成两次复制 SendInput, 请先完成两次文本复制 } return ; 剪贴板变化时的处理函数 ClipboardChanged(type) { global prevClip, currentClip ; 仅处理纯文本内容(type=1对应文本) if (type = 1) { ; 将当前剪贴板内容存为前一次,新内容存为当前 prevClip := currentClip currentClip := Clipboard } }
代码说明
OnClipboardChange("ClipboardChanged"):注册剪贴板变化监听,每次剪贴板内容更新时自动调用ClipboardChanged函数。ClipboardChanged函数:仅当剪贴板内容为纯文本时,更新prevClip和currentClip——prevClip保存上一次复制的内容,currentClip保存最新复制的内容。- 热字符串
:C:etitle:::触发时检查是否有两次有效复制内容,有则按指定格式输出,无则提示用户。
使用步骤
- 复制第一段文本(此时
prevClip为空,currentClip为第一段内容) - 复制第二段文本(此时
prevClip变为第一段内容,currentClip变为第二段内容) - 在文本框输入
etitle,自动输出格式文本:Text [第一段内容] - 第二段内容
内容的提问来源于stack exchange,提问作者Phil Hanson
相关产品推荐
相关产品推荐

