Буфер обмена

Собственно, есть ли возможность работать с буфером обмена?

{$reference System.Windows.Forms.dll}
{$apptype windows}
uses System.Windows.Forms;
begin
  Clipboard.SetText('abc');
  writeln(Clipboard.GetText());
end.
1 лайк

Спасибо!

А у меня вот так говорит:

Ошибка

В буфере обмена лежит текст, который нельзя удалить, потому что буфер обмена занят другим процессом

begin
  Clipboard.Clear;
//  Clipboard.SetText('abc');
  writeln(Clipboard.GetText());
end.

А вот такой вариант работает. Т.е. очистить буфер можно, а записать туда нельзя?

а так?

begin
  Clipboard.Clear;
Clipboard.SetText('abc');
  writeln(Clipboard.GetText());
end.

Нет, на SetText валится…

У меня работает

Может, как-то обеспечить одинаковость состояния буфера для всех экспериментаторов? А то получается не совсем корректное обсуждение “работает - валится”

Как писал ibond, проблема в том, что какое-то приложение блокирует доступ к буферу. К примеру, если в Download Master в настройках стоит “Отслеживать URL в буфере обмена”, то среда будет выдавать ошибку при попытке изменить содержимое, хотя и не всегда(видимо DM проверяет его лишь периодически).

Схожая проблема из-за DM бывает при запуске MS офиса.

1 лайк

Вот поди ж ты: отключил DM и всё сразу заработало :slight_smile: Спасибо. Хотя осталось непонятным, почему при работающем DM другие приложения совершенно свободно работают с буфером обмена.