在Mac OS中监控剪贴板

时间:2011-08-16 01:04:50

标签: cocoa macos monitoring clipboard

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

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

想法?

2 个答案:

答案 0 :(得分:2)

我已经编写了一个剪贴板监听器[它将打印本地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关于它...]

答案 1 :(得分:0)

你看过this了吗?您可以查看命令+ c(和x)并手动获取剪贴板。