Как я могу, используя GtkClipboard , читать и записывать в буфер обмена? В качестве примера, пожалуйста, покажите мне, как получить текущее содержимое буфера обмена и распечатать его на консоли.
Я пытался получить и напечатать то, что в данный момент находится в буфере обмена, но это не работает:
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 или какой-либо другой релиз.
Хорошо, у меня есть рабочий пример:
#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()
, так как это закрывает приложение.