实现代码如下:

#include <windows.h>

// 备份Clipboard数据的结构
struct ClipboardData {
    HANDLE hData;
    UINT format;
};

// 备份Clipboard的所有数据
void backupClipboardData(ClipboardData* pData, int& count) {
    if (!OpenClipboard(NULL)) {
        return;
    }

    count = 0;

    // 遍历所有格式的数据,保存到结构中
    UINT format = 0;
    while ((format = EnumClipboardFormats(format))) {
        HANDLE hData = GetClipboardData(format);
        if (hData != NULL) {
            pData[count].hData = hData;
            pData[count].format = format;
            count++;
        }
    }

    CloseClipboard();
}

// 恢复Clipboard的所有数据
void restoreClipboardData(ClipboardData* pData, int count) {
    if (!OpenClipboard(NULL)) {
        return;
    }

    // 清空Clipboard
    EmptyClipboard();

    // 逐个格式写入数据
    for (int i = 0; i < count; i++) {
        SetClipboardData(pData[i].format, pData[i].hData);
    }

    CloseClipboard();
}

int main() {
    // 备份Clipboard数据
    ClipboardData data[10];
    int count = 0;
    backupClipboardData(data, count);

    // 操作其他东西
    // ...

    // 恢复Clipboard数据
    restoreClipboardData(data, count);

    return 0;
}
``
C++ 通过调用win api实现一下逻辑1 备份Clipboard的所有类型的数据保存到一个全局结构2 操作其他东西3 恢复Clipboard的所有数据

原文地址: https://www.cveoy.top/t/topic/g74T 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录