cocoa - 在 Mac OS 中监视剪贴板

标签 cocoa macos monitoring clipboard

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

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

想法?

最佳答案

我用 native 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关于它...]

关于cocoa - 在 Mac OS 中监视剪贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7072533/

相关文章:

objective-c - Objective C 中使用正则表达式和 nsarray 进行字符串操作以及可变字符串

cocoa - 将 CATransform3D 转换为 NSString

css - Safari 优先安装字体

java缓存hashmap每天过期

c# - 我应该考虑使用哪些 .Net 工具来构建应用程序来监控我们的实时系统?

linux - Auditd - auditctl 规则仅监控目录(不是所有子目录和文件等)

objective-c - cocoa WebView中innerhtml和outerhtml的区别

iphone - 学习 Obj-C 内存管理

ruby-on-rails - 在 Ruby 1.9.2 中使用 brew

objective-c - 在 Mac 上使用 ZXingObjC 创建二维码