为什么Win32 OleGetClipboard()函数返回CLIPBRD_E_CANT_OPEN?

时间:2020-03-06 14:47:08  来源:igfitidea点击:

在什么情况下Win32 API函数OleGetClipboard()会失败并返回" CLIPBRD_E_CANT_OPEN"?

更多背景信息:我正在协助解决Firefox错误。详细信息在这里:

错误444800无法以无损格式从剪贴板检索图像数据

在我帮助编写的自动化测试中,我们看到OleGetClipboard()有时会失败并返回CLIPBRD_E_CANT_OPEN。那是出乎意料的,而从Windows剪贴板提取图像数据的Firefox代码取决于该调用是否成功。

解决方案

测试是否在终端服务上运行?从.NET设置剪贴板时,请参阅CLIPBRD_E_CANT_OPEN错误。

从我在MSDN中看到的内容来看,这似乎暗示着问题出在试图将数据实际放入剪贴板的人,即数据源。如果由于某种原因,他们对OleSetClipboard()的调用失败,则我们将无法提取内容。
我将看一下如何将数据放入剪贴板,并查看是否有一个测试用例执行此操作(将数据复制到剪贴板),然后导致我们正在谈论的问题。

该文档说,如果OpenClipboard失败,OleGetClipboard可能会失败,并显示此错误代码。反过来,如果我们阅读该文档,则会显示:

"如果另一个窗口打开了剪贴板,则OpenClipboard失败。"

这是一种专有资源:一次只能打开一个窗口的剪贴板。基本上,如果我们无法执行此操作,请稍等片刻,然后重试。