如何开发剪贴板复制触发自动执行命令的程序?
剪贴板复制触发自动执行命令/代码的实现方案
跨平台轻量实现(Python)
核心逻辑是持续检测剪贴板内容变化,当内容更新时触发预设操作,适合快速原型开发:
- 依赖库:先安装
pyperclip(pip install pyperclip) - 示例代码:
import pyperclip import time import subprocess last_clip = pyperclip.paste() while True: current_clip = pyperclip.paste() if current_clip != last_clip: last_clip = current_clip # 替换为你要执行的命令或代码 print(f"检测到新剪贴内容:{current_clip}") # 执行外部命令(比如调用系统命令) subprocess.run(["echo", f"剪贴板更新:{current_clip}"], shell=True) # 执行自定义代码逻辑 # process_clipboard_content(current_clip) time.sleep(0.5)
- 说明:轮询方式有轻微延迟,但实现简单,跨Windows/macOS/Linux通用。
Windows平台实时触发实现
利用Windows原生剪贴板消息监听,无延迟,适合生产环境:
- PowerShell示例(无需编译,直接运行):
Add-Type @" using System; using System.Windows.Forms; public class ClipListener : Form { public ClipListener() { Visible = false; Clipboard.SetDataObject("init", true); } protected override void WndProc(ref Message m) { const int WM_CLIPBOARDUPDATE = 0x031D; if (m.Msg == WM_CLIPBOARDUPDATE) { string content = Clipboard.GetText(); if (!string.IsNullOrEmpty(content)) { // 执行自定义命令或程序 System.Diagnostics.Process.Start("cmd.exe", $"/c echo 剪贴板更新:{content}"); } } base.WndProc(ref m); } } "@ $listener = New-Object ClipListener [System.Windows.Forms.Application]::Run($listener)
- 说明:通过监听
WM_CLIPBOARDUPDATE系统消息,实现剪贴板变化的实时响应。
macOS平台实现
可通过AppleScript快速实现,或用Swift做原生监听:
- AppleScript示例(可保存为
.scpt文件双击运行):
set lastContent to "" repeat set currentContent to the clipboard as text if currentContent ≠ lastContent then set lastContent to currentContent -- 执行shell命令 do shell script "echo '剪贴板更新:" & currentContent & "'" -- 调用自定义脚本 -- do shell script "/Users/yourname/scripts/handle_clip.sh" end if delay 0.5 end repeat
- 进阶:用Swift的
NSPasteboard添加观察者,实现无轮询的实时触发。
Linux平台实现
基于X11工具或GTK库实现:
- Bash脚本示例(依赖
xclip,先安装sudo apt install xclip):
last_content="" while true; do current_content=$(xclip -o -selection clipboard) if [ "$current_content" != "$last_content" ]; then last_content="$current_content" echo "剪贴板更新:$current_content" # 执行自定义脚本 # /home/yourname/scripts/process_clip.sh "$current_content" fi sleep 0.5 done
- 进阶:用Python的
gi.repository.Gtk监听剪贴板,实现实时触发。
关键注意事项
- 权限:macOS需要在「系统偏好设置-安全性与隐私」中允许终端/脚本访问剪贴板;Linux可能需要X11权限。
- 性能:轮询间隔建议设为0.3-0.5秒,避免占用过多CPU;原生API监听效率更高。
- 过滤逻辑:可添加内容判断(比如只处理包含特定关键词的剪贴内容),减少不必要触发。
内容的提问来源于stack exchange,提问作者dawgxx
相关产品推荐
相关产品推荐

