我有这个间歇性和不连贯的问题,这让我很长时间很疯狂:在我的一个程序中,GetClipboardData(CF_TEXT)有 90%(左右)的时间成功,但每隔一段时间它就会返回 NULL。
尽管 OpenClipboard() 在调用 GetClipboardData(CF_TEXT) 之前总是成功(并检查返回值),但还是会这样做。
请注意,90% 的成功率是针对同一页的!(即我知道那里有一个 CF_TEXT 内容)
注意:当它失败时,我立即调用 GetLastError() 但它返回的只是:“操作成功完成”。
有问题的代码很简单:
if (::OpenClipboard(hwndW))
{
HANDLE handleClip = ::GetClipboardData(CF_TEXT);
if (handleClip == NULL)
dw = GetLastError()
}
什么可能会将错误的 GetLastError() 代码注入其中?
知道什么会导致这种不一致的行为吗?
是否有其他进程正在锁定剪贴板?如果是这样,我该如何取回它?
如何解决或调试这样的问题?