如何从Python中的任何应用程序捕获clipboard事件(相当于onchangeciphone)

2024-10-01 09:17:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个剪贴板管理器。我当前的问题是成功地捕捉到任何应用程序对剪贴板的修改。例如:

  • 从ctrl-c
  • 从右键单击并复制到剪贴板

其思想是在后台运行一个python脚本,就像一个教士,捕捉剪贴板的每一个变化

非常感谢:)

附言: 对于知道自动热键的人,我正在寻找onClipboardChange的等价物


Tags: 脚本应用程序管理器后台思想教士ctrl热键
3条回答

我想你需要在剪贴板上投票。。。我觉得你听不到任何事件

下面是windows中的一个例子

import win32clipboard
last_data = None
while True:
    # get clipboard data
    win32clipboard.OpenClipboard()
    data = win32clipboard.GetClipboardData()
    win32clipboard.CloseClipboard()
    if data != last_data:
       print "Clipboard Changed!" + data
       last_data = data

使用C#/单声道和Gtk进行此操作。在

    /* put this eventhandler on your main method */
    Gtk.Clipboard.Get (Gdk.Selection.Clipboard).OwnerChange += onClipboardOwnerChange;

    protected void onClipboardOwnerChange (object sender, EventArgs e)
    {
          Console.WriteLine ("onClipboardOwnerChange!!");
    }

我在网上找到了一个使用GTK的解决方案。有效:)

import sys
from gi.repository import Gtk, Gdk


def callBack(*args):
    print("Clipboard changed. New value = " + clip.wait_for_text())


clip = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
clip.connect('owner-change',callBack)
Gtk.main()

有没有人有QT的解决方案或更原生的解决方案?在

相关问题 更多 >