我怎样才能使用Gtk剪贴板 https://developer.gnome.org/gtk3/stable/gtk3-Clipboards.html、读取和写入剪贴板?作为示例,请向我展示如何获取当前剪贴板内容并将其打印到控制台。
我尝试使用此方法来获取并打印剪贴板中当前的内容,但它不起作用:
GtkClipboard *clip = gtk_clipboard_get(GDK_SELECTION_PRIMARY);
gtk_clipboard_request_text(clip, (GtkClipboardTextReceivedFunc)print_clip, NULL);
一切都编译时没有任何警告,但是print_clip()
永远无法达到功能。也许我应该使用另一个函数,比如gtk_clipboard_wait_for_text()
?请帮帮我,我该怎么办?
如果重要的话,我使用 Linux/X11。另外,我使用 GTK+3,而不是 GTK+2 或其他版本。
Ok, I've got a working example:
#include <gtk/gtk.h>
void clipboard_callback(GtkClipboard *clip, const gchar *text, gpointer data)
{
g_print("Now we're in clipboard_callback function.\n");
gtk_main_quit();
}
int main(int argc, char **argv)
{
gtk_init(&argc, &argv);
GtkClipboard *clip = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);
gtk_clipboard_request_text(clip, clipboard_callback, NULL);
gtk_main();
return 0;
}
我现在唯一需要的就是以某种方式退出clipboard_callback()
不打电话gtk_main_quit()
,因为这会关闭应用程序。