2014-09-17 6 views
6

Sto lavorando su un gestore di appunti. Il mio attuale problema è riuscire a catturare la modifica degli appunti da qualsiasi applicazione. Per esempio:Come catturare l'evento degli appunti (equivalente su onChangeClipboard) da qualsiasi applicazione in Python

  • Da un ctrl - c
  • Da un clic destro e copiare negli appunti

L'idea è che uno script python è in esecuzione in background, come un demone e cogliere ogni cambiamento della clipboard

Grazie a lot :)

PS: per le persone che conoscono autohotkey, Cerco onClipboardChange equi valente

+0

cosa os? .... dubito che tu possa ottenere un evento che probabilmente dovrai usare il polling \ –

risposta

5

ho trovato nel web una soluzione usando GTK. Funziona :)

import sys 
from gi.repository import Gtk, Gdk 


def callBack(*args): 
    print("Clipboard changed. New value = " + clip.wait_for_text()) 


clip = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) 
clip.connect('owner-change',callBack) 
Gtk.main() 

Qualcuno ha una soluzione con QT o una soluzione più nativa?

0

penso che si avrebbe bisogno di interrogare negli appunti ... io non credo che si può ascoltare per un evento

ecco un esempio in finestre

import win32clipboard 
last_data = None 
while True: 
    # get clipboard data 
    win32clipboard.OpenClipboard() 
    data = win32clipboard.GetClipboardData() 
    win32clipboard.CloseClipboard() 
    if data != last_data: 
     print "Clipboard Changed!" + data 
     last_data = data 
0

Fare questo con C#/Mono e Gtk.

/* put this eventhandler on your main method */ 
    Gtk.Clipboard.Get (Gdk.Selection.Clipboard).OwnerChange += onClipboardOwnerChange; 

    protected void onClipboardOwnerChange (object sender, EventArgs e) 
    { 
      Console.WriteLine ("onClipboardOwnerChange!!"); 
    } 
Problemi correlati