#include <windows.h> #include <iostream> void copTextToClipboard(const char* textToCopy) { // 打开剪切板 if (!OpenClipboard(NULL)) { std::cout << "无法打开剪切板" << std::endl; return; } // 清空剪切板内容 if (!EmptyClipboard()) { std::cout << "无法清空剪切板" << std::endl; CloseClipboard(); return; } // 获取要复制的文本的长度(包括空字符) int textLength = strlen(textToCopy) + 1; // 在全局堆上分配内存以存储文本 HGLOBAL hClipboardData = GlobalAlloc(GMEM_MOVEABLE, textLength); if (hClipboardData == NULL) { qDebug() << "无法分配内存"; CloseClipboard(); return; } // 获取分配的内存的指针 char* pClipboardData = static_cast<char*>(GlobalLock(hClipboardData)); // 将文本复制到分配的内存中 strcpy_s(pClipboardData, textLength, textToCopy); // 释放分配的内存 GlobalUnlock(hClipboardData); // 将数据放入剪切板 if (SetClipboardData(CF_TEXT, hClipboardData) == NULL) { std::cout << "无法设置剪切板数据" << std::endl; GlobalFree(hClipboardData); CloseClipboard(); return; } // 关闭剪切板 CloseClipboard(); std::cout << "文本已复制到剪切板" << std::endl; }
标签:复制到,cout,Windows,hClipboardData,textToCopy,剪切板,文本 From: https://www.cnblogs.com/TechNomad/p/17735388.html