最近在WPF项目中遇到一个问题,当使用System.Windows.Clipboard.SetText时,在有些机器上遇到OpenClipboard 失败的错误,错误的详细信息如下:
System.Runtime.InteropServices.COMException (0x800401D0): OpenClipboard 失败 (异常来自 HRESULT:0x800401D0 (CLIPBRD_E_CANT_OPEN))
在 System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
在 System.Windows.Clipboard.Flush()
在 System.Windows.Clipboard.CriticalSetDataObject(Object data, Boolean copy)
在 System.Windows.Clipboard.SetDataInternal(String format, Object data)
在 System.Windows.Clipboard.SetText(String text, TextDataFormat format)
在 System.Windows.Clipboard.SetText(String text)
奇怪的是在有些机器上没有问题,都是相同的Windows 10 操作系统。后来发现使用System.Windows.Clipboard.SetDataObject替换System.Windows.Clipboard.SetText就没有问题了,问题似乎解决了,但原因是什么还不清楚。