Монитор буфера обмена в Mac OS - PullRequest
3 голосов
/ 16 августа 2011

Мне нужно отслеживать события буфера обмена в моем приложении Mac OS. Я нашел образец для средства просмотра буфера обмена и другого вопроса в stackoverflow, запрашивающего то же самое, но ни у одного из них нет решения о том, как отслеживать события буфера обмена.

То есть сразу после того, как пользователь нажимает команду + c, я получаю уведомление о событии. Я знаю, что эта функциональность существует, так как есть приложение , которое использует эту функцию

Идеи

Ответы [ 2 ]

2 голосов
/ 21 апреля 2012

Я написал слушатель буфера обмена [он будет печатать каждую новую текстовую информацию, поступившую в буфер обмена] на нативном 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, поэтому я не знаю, как это исправить, на самом деле я отправил вопрос об этом ...]

0 голосов
/ 16 августа 2011

Вы смотрели на это .Вы можете наблюдать за командой + c (и x) и вручную получить буфер обмена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...