WPF에서 클립보드 복사를 하려고 하는데, 계속 'OpenClipboard 실패입니다. (예외가 발생한 HRESULT: 0x800401D0 (CLIPBRD_E_CANT_OPEN))' 오류가 발생하고 있습니다. 무시하고 그대로 사용해도 전혀 문제는 없으나, 메시지가 계속 표시되니 다른 방법을 찾아보려고 합니다.
이 오류는 주로 다른 애플리케이션이나 프로세스가 클립보드를 잠금 상태로 유지하고 있을 때 발생하는데요, 이때 WPF에서 Clipboard.SetText(data) 메서드를 사용할 때 이 오류가 발생할 수 있습니다. 😭 이 문제를 해결하기 위해 다음과 같은 대안을 사용해 보았습니다.
OpenClipboard 실패입니다.
닷넷 4.0 이상의 프레임워크에서 위와 같은 오류가 발생할 때, Clipboard.SetText(data) 대신 Clipboard.SetDataObject(data) 메서드를 사용하여 해결하였습니다.
이 방법을 사용하면 클립보드에 데이터를 복사할 때 오류가 발생하는 빈도가 크게 줄어든 것을 확인하였는데요, 이후에 별도로 발생하는 경우는 확인하지 못하였습니다. 실제로 많은 경우에 이 방법으로 문제를 해결할 수 있으리라 기대합니다. 😉
- 클립보드를 사용할 때는 잠금 문제를 피하기 위해 약간의 지연을 주는 것도 도움이 될 수 있어요.
- 백그라운드에서 클립보드를 사용하는 다른 애플리케이션이 있는지 확인하고, 가능한 경우 해당 애플리케이션을 종료해 보세요.
