使用 GTK 库清除系统剪贴板,C 语言

Uri*_*Uri 5 c gtk

我正在调用以下函数来尝试清除系统剪贴板:

GtkClipboard *clipboard;

clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);
gtk_clipboard_clear(clipboard);
Run Code Online (Sandbox Code Playgroud)

但它并没有清洁任何东西。我搜索了 Gnome 和 GTK+ 文档以及无数示例代码片段,但我不知道如何执行此操作。

所以我的问题是,如何通过代码清除系统(linux、gnome)剪贴板?谢谢!

mat*_*tja 4

我相信您实际上需要用零长度文本设置它才能完全清除它,我自己不确定为什么这是必要的,但这段代码似乎有效:

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);
Run Code Online (Sandbox Code Playgroud)

请注意,当 GTK+ 在 X11 下运行时,实际上有两个“剪贴板”,一个是 GTK (GDK_SELECTION_CLIPBOARD),另一个是 X11 (GDK_SELECTION_PRIMARY)。在Windows下,GDK_SELECTION_PRIMARY上的操作我认为什么也不做。