2010-03-10 128 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