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

如何开发剪贴板复制触发自动执行命令的程序?

剪贴板复制触发自动执行命令/代码的实现方案

跨平台轻量实现(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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:54:36