Очистить системный буфер обмена с помощью библиотеки GTK в C - PullRequest
3 голосов
/ 10 марта 2010

Я вызываю следующую функцию, чтобы попытаться очистить системный буфер обмена:

GtkClipboard *clipboard;

clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);
gtk_clipboard_clear(clipboard);

однако это ничего не убирает. Я искал документацию Gnome и GTK + и бесчисленные примеры фрагментов кода, и я не знаю, как это сделать.

Итак, мой вопрос, как очистить буфер обмена системы (linux, gnome) по коду? Спасибо!

1 Ответ

2 голосов
/ 10 марта 2010

Полагаю, вам нужно установить текст нулевой длины, чтобы полностью очистить его, я сам не уверен, почему это необходимо, но этот код работает:

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, я думаю, ничего не делают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...