我正在开发一些软件,它将一个大字符串复制到 Windows 剪贴板以粘贴到其他一些软件中。粘贴在其他软件中不起作用,当我粘贴到记事本中时,初始字符串中的换行符消失了,这就是它无法粘贴到其他软件中的原因。我知道这一点,因为当我将换行符重新添加到记事本并进行复制时,粘贴然后在另一个程序中起作用。当我粘贴到写字板时,换行符神秘地出现在那里。
我在 C++ 中使用 CF_TEXT 剪贴板格式类型的 SetClipboardData()。我尝试过使用 CF_OEMTEXT、CF_DSPTEXT,但这些都不起作用。我在电子表格的 CF_SYLK(符号链接)上看到了一些文档,因为我粘贴的软件类似于电子表格,但我也无法让它工作。下面是我复制到剪贴板的代码。
void ClipBoardManager::CopyExcelStringToClipBoard(std::string excel_str)
{
OpenClipboard(nullptr);
EmptyClipboard();
HGLOBAL hg = GlobalAlloc(GMEM_MOVEABLE, excel_str.size() + 1);
if (!hg) {
CloseClipboard();
return;
}
memcpy(GlobalLock(hg), excel_str.c_str(), excel_str.size() + 1);
GlobalUnlock(hg);
SetClipboardData(CF_TEXT, hg);
CloseClipboard();
GlobalFree(hg);
}
任何帮助表示赞赏。