Как освободить буфер обмена, заблокированный другим процессом?

У меня есть проблема, когда я пытаюсь извлечь объект из буфера обмена, изменить его и добавить обратно...

Снова и снова я продолжаю получать

Запрошенная операция с буфером обмена не может быть выполнена

Похоже, что буфер обмена заблокирован каким-то процессом, как мне освободить буфер обмена?

1 ответ

Решение

Вы не можете освободить это. Если в другом приложении открыт буфер обмена, вам придется подождать, пока оно закроется. Если буфер обмена был недавно (в течение последних одной или двух) изменен, следует ожидать, что другие приложения будут открывать его для проверки, и, следовательно, ожидать сбоев, если вы ожидаете, что сможете открыть его самостоятельно. Вам нужно использовать обработчики try..except, а также sleep() и цикл "3 удара".
псевдокод:

Success := false;
Attempts := 0;
While (Attempts < 3) and (Success = false) do
begin
  Try
    inc(Attempts);
    OpenClipboard;
    Success := true;
  except
    sleep(attempts * 1000);
  end
end;
Другие вопросы по тегам