我需要在我的Mac OS应用程序中监视剪贴板事件。我找到了一个示例clipboard viewer和另一个问题在stackoverflow上寻求同样的东西,但它们都没有解决如何监视剪贴板事件的方法。
也就是说,在用户按下command + c之后,我会收到通知事件。我知道这个功能是存在的,因为有一个应用程序使用了这个功能。
有什么想法吗?
也就是说,在用户按下command + c之后,我会收到通知事件。我知道这个功能是存在的,因为有一个应用程序使用了这个功能。
有什么想法吗?
我已经编写了一个剪贴板监听器[它将打印每个进入剪贴板的新文本信息],使用原生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开发人员,所以我不知道如何解决这个问题,实际上我已经在这里发布了一个问题...]
你看过this吗?你可以监听 command + c (和 x) 并手动获取剪贴板。