난 내가 클립 보드에서 객체를 검색을 수정하고 다시 추가하려고에 문제가 ...다른 프로세스에서 잠긴 클립 보드를 해제하는 방법은 무엇입니까?
시간이 다시 나는
가 클립 보드에 작업이
을 수행 할 수 없습니다 요청 된가 계속
일부 프로세스에 의해 클립 보드가 잠겨져있는 것처럼 보입니다. 어떻게 클립 보드를 해제 할 수 있습니까?
난 내가 클립 보드에서 객체를 검색을 수정하고 다시 추가하려고에 문제가 ...다른 프로세스에서 잠긴 클립 보드를 해제하는 방법은 무엇입니까?
시간이 다시 나는
가 클립 보드에 작업이
을 수행 할 수 없습니다 요청 된가 계속
일부 프로세스에 의해 클립 보드가 잠겨져있는 것처럼 보입니다. 어떻게 클립 보드를 해제 할 수 있습니까?
당신은 그것을 풀 수 없습니다. 다른 앱에 클립 보드가 열려 있으면 닫을 때까지 기다려야합니다. 클립 보드가 최근에 (과거 2 ~ 2 초 내에) 수정 된 경우 다른 응용 프로그램에서 검사를 위해 열 것이라고 예상해야하므로 즉시 열 수있을 것으로 예상되는 경우 실패가 예상됩니다. try..except 핸들러를 sleep() 및 "3 strikes"루프와 함께 사용해야합니다.
의사 코드 :이 오류 메시지를받을 때
Success := false;
Attempts := 0;
While (Attempts < 3) and (Success = false) do
begin
Try
inc(Attempts);
OpenClipboard;
Success := true;
except
sleep(attempts * 1000);
end
end;
나는 타이머를 시작하고 timer_tick에서 검색하여이 작업을 수행했다. 아마도 컨텍스트 스위치가 클립 보드를 해제하는 데 도움이 될 것이다. 이유를 잘 모르지만 매력처럼 작동합니다 ... – GutterStink
타이머가 가끔 작동합니다. 그러나 클립 보드 모니터링이 많은 시스템은 고려할 수 없습니다. 많은 프로그램이 클립 보드를 모니터링합니다. 일부는 Google 어스 (URL을 찾고 있습니까?)와 같이 상당히 가볍습니다. 일부는 네트워크를 통해 로컬/원격 클립 보드를 동기화해야하는 RemoteDesktop과 같이 오랜 시간이 걸릴 수 있습니다. 대기 시간을 예측할 수 없으므로 타이머 자체가 안정적으로 작동하지 않습니다. except/sleep/retry 루프가 필요합니다. –
당신은 분명히 시겠어요. 개체를 검색 할 때 또는 수정 된 개체를 다시 설정할 때입니까? 비평을 위해 공유 할 코드 샘플이 있습니까? – BenSwayne
Taskmgr.exe, 프로세스 탭을 사용하여 문제가있는 사람을 찾을 때까지 하나씩 프로세스를 시작합니다. 제거하십시오. –
나는 타이머를 시작하고 timer_tick에서 검색함으로써 그것을했다. 아마도 컨텍스트 스위치가 클립 보드를 해제하는 것을 도왔다. 이유를 알지 못하지만 매력처럼 작동합니다. – GutterStink