首页 > 解决方案 > 在 Windows 10 October 2018 更新中绕过剪贴板历史记录

问题描述

我们有一个 C++ 应用程序,它大量使用剪贴板 APIOpenClipboard等。

该应用程序经常保存剪贴板的内容,插入内容,粘贴然后恢复剪贴板。

随着 Windows 10 十月更新,这会导致大量剪贴板历史记录也可能在设备之间同步。

是否有新api的绕过新的剪贴板历史记录?

标签: c++winapi

解决方案


终于找到了一种方法来做到这一点 - 微软支持并最终记录在这里:Cloud Clipboard and Clipboard History Formats

您需要先获取几个格式 ID

UINT clipboardHistoryFormat_ = RegisterClipboardFormat(L"CanIncludeInClipboardHistory");
UINT cloudClipboardFormat_ = RegisterClipboardFormat(L"CanUploadToCloudClipboard");

然后,当您在剪贴板中写入 Windows 10 历史记录或云中不需要的任何内容时,您还需要将上述格式设置DWORD为 0

auto number_of_bytes = sizeof(DWORD);
auto hMem = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, number_of_bytes);
if (hMem != nullptr)
{
    if (SetClipboardData(clipboardHistoryFormat_, hMem) == nullptr)
    {
        // something went wrong
    }
}

推荐阅读