【问题标题】:Monitor clipboard in Mac OS在 Mac OS 中监视剪贴板
【发布时间】:2011-08-16 01:04:50
【问题描述】:

我需要在我的 mac os 应用程序中监视剪贴板事件。我在 stackoverflow 中找到了一个 clipboard viewer 和另一个 question 的样本,要求同样的事情,但他们都没有关于如何监控剪贴板事件的解决方案。

也就是说,在用户点击 command + c 之后,我会立即收到一个事件通知。我知道该功能存在,因为有一个 app 使用此功能

想法?

【问题讨论】:

标签: cocoa macos monitoring clipboard


【解决方案1】:

我已经用原生 Java 编写了一个剪贴板监听器[它将打印输入剪贴板的每个新的基于文本的信息],请参见以下代码:

import java.awt.Toolkit;  
import java.awt.datatransfer.*;  
import java.io.IOException;  

public class ClipboardListener extends Thread implements ClipboardOwner {

    Clipboard systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard();  

    public void run(){  
        Transferable selection = systemClipboard.getContents(this);  
        gainOwnership(selection);  
        while (true) {}
    }  

    public void gainOwnership(Transferable t){ 
        try {this.sleep(100);} 
        catch (InterruptedException e) {}
        systemClipboard.setContents(t, this);  
    }  

    public void lostOwnership(Clipboard clipboard, Transferable contents) {
        try {System.out.println((String) clipboard.getData(DataFlavor.stringFlavor));} 
        catch (UnsupportedFlavorException e) {} 
        catch (IOException e) {}
        gainOwnership(contents);  
    }  
}

public class myApp {

    public static void main(String[] args){
        ClipboardListener listener = new ClipboardListener();
        listener.start();}
}

它可以工作,但应用程序需要焦点才能从剪贴板获取事件。 [我不是 Mac OS X 开发人员,所以我不知道如何解决这个问题,实际上我已经发布了一个 question 关于它...]

【讨论】:

    【解决方案2】:

    你看过this。您可以查看 command + c(和 x)并手动获取剪贴板。

    【讨论】:

    • 如果用户从“编辑”菜单中选择“复制”会发生什么?
    • 是的……我不确定是否有办法做到这一点
    • 您确定您提到的应用程序支持此功能吗?所以它能够监控 NSMenu 的选择?
    • @larcus 你是想评论这个问题吗?
    • 什么?我不明白你的意思。
    猜你喜欢
    • 2012-04-28
    • 1970-01-01
    • 2011-02-02
    • 2021-01-20
    • 2011-03-14
    • 2010-10-11
    • 2011-12-04
    • 2018-11-11
    • 1970-01-01
    相关资源
    最近更新 更多