2010-03-10 179 views
3

我打電話下面的函數來嘗試清除系統剪貼板:清除使用GTK LIB系統剪貼板,在C

GtkClipboard *clipboard; 

clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); 
gtk_clipboard_clear(clipboard); 

但是它沒有任何的清洗。我搜索了Gnome和GTK +文檔以及無數的示例代碼片段,但我不知道如何執行此操作。

所以我的問題,你如何通過代碼清除系統(linux,gnome)剪貼板? 謝謝!

回答

2

我相信你需要真正具有零長度的文本設置爲完全清除它,我不能確定自己爲什麼這是必要的,但這段代碼似乎工作:

clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY);                
gtk_clipboard_clear(clipboard);                     
gtk_clipboard_set_text(clipboard, "", 0);                   

clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);               
gtk_clipboard_clear(clipboard);                     
gtk_clipboard_set_text(clipboard, "", 0); 

注意,當GTK +在X11下運行,實際上有兩個'剪貼板',GTK(GDK_SELECTION_CLIPBOARD)和X11(GDK_SELECTION_PRIMARY)。在Windows下,GDK_SELECTION_PRIMARY上的操作我認爲什麼都不做。

+1

好的答案,但一個澄清:沒有真正的兩個不同的剪貼板。 「剪貼板」是我們從應用程序中瞭解到的剪貼板。 X11剪貼板('PRIMARY')包含最後選定的文本,通過單擊鼠標中鍵可以粘貼大多數X11環境。 – ptomato 2010-03-11 10:13:09