我正在调用以下函数来尝试清除系统剪贴板:
GtkClipboard *clipboard;
clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);
gtk_clipboard_clear(clipboard);
Run Code Online (Sandbox Code Playgroud)
但它并没有清洁任何东西。我搜索了 Gnome 和 GTK+ 文档以及无数示例代码片段,但我不知道如何执行此操作。
所以我的问题是,如何通过代码清除系统(linux、gnome)剪贴板?谢谢!
我相信您实际上需要用零长度文本设置它才能完全清除它,我自己不确定为什么这是必要的,但这段代码似乎有效:
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上的操作我认为什么也不做。