У меня проблема с буфером обмена, и я получаю это сообщение об ошибке каждый раз, когда пытаюсь выполнить операцию копирования/вставки из файла Excel.
Код прерывается на Clipboard.GetDataObject()
, и сообщение об ошибке таково:
OpenClipboard Failed (Exception from HRESULT: 0x800401D0 (CLIPBRD_E_CANT_OPEN))
Мое приложение WPF уже запущено, когда я открываю Excel, пишу какой-то текст, а затем пытаюсь скопировать/вставить.
Код, который я использую, таков:
private void SetClipboardData()
{
IDataObject data = Clipboard.GetDataObject();
IList result = GetDataForFileDropFormat( data );
if ( ( result != null ) && ( result.Count > 0 ) )
{
this._elementsClipboard = result;
this._sourceDrag = null;
this._sourceClipboard = null;
}
}
Вышеупомянутая функция вызывается в этом методе обработчика:
public void Handle_WM_DRAWCLIPBOARD( IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled )
{
SendMessage( this._nextClipboardViewer, msg, wParam, lParam );
// get data from clipboard
SetClipboardData();
handled = true;
}
Я искал форумы MSDN и .NET, но не нашел обходного пути для этой проблемы.
Может ли кто-нибудь помочь мне с этим или дать мне представление о том, что я должен попробовать?
Спасибо!