Присоединение к цепочке буфера обмена - PullRequest
3 голосов
/ 10 января 2012

В дополнение к моей записи в буфере обмена нестандартного формата я рассматриваю возможность написания собственного компонента мониторинга клипа.

До утверждения:

ClipboardWindow:=SetClipboardViewer(Form1.Handle);

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

OpenClipboard(Form1.Handle); 
EmptyClipboard; 
CloseClipboard;

тогда как другие вообще не включают код очистки. Я в замешательстве.

Я считаю, Clipbrd.TClipboard.Clear делает то же самое с VCL.

Мой вопрос :

При очистке буфера обмена перед присоединением clipboard chain обязательно?

Ответы [ 2 ]

3 голосов
/ 10 января 2012

Нет, нет необходимости очищать буфер обмена. На самом деле, вы не должны. Другие мониторы буфера обмена будут без необходимости реагировать на обновление, и пользователь может захотеть вставить ту вещь, которую вы только что уничтожили. Кроме того, мониторинг цепочки буфера обмена намного больше, чем просто добавление себя в цепочку. Вы должны передать события в следующее окно (дескриптор результата из SetClipboardViewer), и вы должны, без сбоев, удалить себя из цепочки при выходе из приложения. Кроме того, вы должны избегать ненужной блокировки буфера обмена. Как правило, это означает ожидание регистрации событий буфера обмена, пока вы не будете готовы к фактической обработке событий. Например, не делайте это первым делом при запуске, если впоследствии вы собираетесь открыть диалоговое окно, спрашивающее пользователя, где он хочет сохранить данные, есть ли у него лицензионный ключ и т. Д.

У меня есть советы, а также общие подводные камни здесь: http://www.clipboardextender.com/developing-clipboard-aware-programs-for-windows/6

0 голосов
/ 16 декабря 2013
  1. Правило максимально простое: если вы хотите удалить содержимое буфера обмена (чтобы другие приложения не могли его использовать), удалите его. если нет, то оставь его.

  2. Вы не знаете, хочет ли ваше использование сохранить данные ИЛИ Вы хотите реализовать что-то необычное? Знаете ли вы те приложения (Paint Shop Pro - одно из них), которые спрашивают: «Вы оставили большое изображение (10 МБ данных) в буфере обмена. Хотите сохранить его или очистить?» Вы могли бы сделать что-то подобное. :)

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