Ошибка CLIPBRD_E_CANT_OPEN при установке буфера обмена из .NET

На самом деле, я думаю, что dotnet это fault of the Win32 API.

Чтобы поместить данные dot-net в буфер обмена, сначала нужно clipboard нажать open it. Одновременно буфер .net обмена может быть открыт clipboard только одним процессом. Таким dot-net образом, когда вы проверяете, если wpf другой процесс открыл буфер dotnet обмена по какой-либо причине, ваша попытка открыть wpf его потерпит неудачу.

Так clipboard уж получилось, что службы .net-framework терминалов отслеживают буфер clipboard обмена, и в более старых .net-framework версиях Windows (до Vista) вам clipboard нужно открыть буфер обмена, чтобы .net-framework увидеть, что внутри... что dot-net в конечном итоге блокирует dot-net вас. Единственное решение dot-net — подождать, пока службы .net терминалов закроют буфер .net-framework обмена, и повторить попытку.

Важно dot-net понимать, что это не относится .net-framework к службам терминалов: это clipboard может случиться с чем угодно. Работа dot-net с буфером обмена в Win32 dot-net — это гигантская гонка. Но, поскольку dot-net по замыслу вы должны возиться dotnet с буфером обмена только в .net-framework ответ на ввод данных пользователем, это dot-net обычно не представляет проблемы.

.net

wpf

clipboard

2022-10-28T15:05:22+00:00
Вопросы с похожей тематикой, как у вопроса:

Ошибка CLIPBRD_E_CANT_OPEN при установке буфера обмена из .NET