1

为什么 GetClipBoardOwner 总是使用 acrobat reader 返回 0 ,

将 GetClipBoardOwner 与任何其他 MS 应用程序(例如 Notepad.exe)一起使用时,结果将是真正的剪贴板所有者,但是当与 Adob​​e acrobat 阅读器一起使用时,我没有得到任何意味着 0 的结果

我调用了 GetLastError() ,它给出了正确的句柄,但是使用 Adob​​e acrobat 阅读器它给出了 0 作为结果

请问有人可以解释一下吗?

非常感谢

4

1 回答 1

1

adobe acrobat 发生了一些非常奇怪的事情:

Acrobat 在使用 NULL (OpenClipboard(NULL)) 打开剪贴板后使用 EmptyClipboard() 获取所有权,这意味着所有者 HWND 为 NULL。

到这里为止,一切都很好,奇怪的是它在所有者为 NULL 时使用 SetClipboardData(),从 MSDN 和我自己的经验来看,这种情况下 SetClipboardData() 应该失败,但在 acrobat 的情况下 SetClipboardData( ) 不会失败,并将数据放在剪贴板中,而所有者为 NULL!

这就是您获得 NULL 所有者的原因。新的悬而未决的问题是为什么 SetClipboardData() 不会失败......

于 2012-06-04T09:11:20.067 回答