Как освободить буфер обмена заблокированным другим процессом? - PullRequest
2 голосов
/ 26 ноября 2011

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

Снова и снова я получаю

запрошенную операцию набуфер обмена не может быть выполнен

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

1 Ответ

0 голосов
/ 28 ноября 2011

Вы не можете освободить его.Если в другом приложении открыт буфер обмена, вам придется подождать, пока оно закроется.Если буфер обмена был недавно (в течение последних одной или двух) изменен, следует ожидать, что другие приложения будут открывать его для проверки, и, следовательно, следует ожидать сбоев, если вы ожидаете, что сможете открыть его самостоятельно.Вам нужно использовать обработчики 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;
...