C++ 复制剪贴板数据 - 使用 GlobalAlloc、GlobalLock 和 GlobalUnlock 函数
在C++中,可以通过使用GlobalAlloc、GlobalLock和GlobalUnlock函数来复制GetClipboardData函数返回的数据。\n\n以下是一个示例代码:\n\ncpp\n#include <iostream>\n#include <Windows.h>\n\nint main() {\n // 打开剪贴板\n if (!OpenClipboard(NULL)) {\n std::cout << "无法打开剪贴板" << std::endl;\n return 1;\n }\n\n // 获取剪贴板中的数据\n HANDLE hData = GetClipboardData(CF_TEXT);\n if (hData == NULL) {\n std::cout << "无法获取剪贴板数据" << std::endl;\n CloseClipboard();\n return 1;\n }\n\n // 锁定内存\n char* pData = static_cast<char*>(GlobalLock(hData));\n if (pData == NULL) {\n std::cout << "无法锁定内存" << std::endl;\n CloseClipboard();\n return 1;\n }\n\n // 复制数据\n size_t dataSize = strlen(pData) + 1;\n char* pCopyData = new char[dataSize];\n strcpy_s(pCopyData, dataSize, pData);\n\n // 解锁内存\n GlobalUnlock(hData);\n\n // 关闭剪贴板\n CloseClipboard();\n\n // 打印复制的数据\n std::cout << "复制的数据: " << pCopyData << std::endl;\n\n // 释放内存\n delete[] pCopyData;\n\n return 0;\n}\n\n\n这个示例代码打开剪贴板,获取剪贴板的文本数据,然后将数据复制到新的内存中,并打印复制的数据。注意,这里的数据类型假设为文本数据,因此使用了CF_TEXT作为参数传递给GetClipboardData函数。如果剪贴板中的数据类型是其他类型,需要使用相应的参数类型。\n\n在复制数据后,需要记得释放内存,以避免内存泄漏。
原文地址: https://www.cveoy.top/t/topic/qgQs 著作权归作者所有。请勿转载和采集!