【发布时间】:2011-01-09 03:45:52
【问题描述】:
我一直在玩 Windows 剪贴板。我注意到只有提供格式才能查看剪贴板。我见过可以转储剪贴板原始内容的程序。请查看http://www.autohotkey.com/docs/misc/Clipboard.htm#ClipboardAll 了解我的意思的示例。
有没有办法做类似的事情,我想做的是能够备份剪贴板,操作它,然后在我的程序完成后恢复它。
我正在寻找一个非 .net 的解决方案,如果这真的是一件事的话
编辑:
到目前为止我已经试过了:
struct clipData {
vector<void*> data;
vector<int> size;
};
struct clipData saveClipboard(int &size) {
clipData ret;
UINT currentFormat = 0;
HGLOBAL hData;
if (OpenClipboard(0)) {
while(currentFormat = EnumClipboardFormats(currentFormat)) {
hData = GetClipboardData(currentFormat);
int currentClipboardFormatSize = GlobalSize(hData); //Only works with text formats. Help!
char *savedClipboardData = new char[currentClipboardFormatSize];
char *ptrToData = (char*) GlobalLock(hData);
memcpy(savedClipboardData, ptrToData, currentClipboardFormatSize);
ret.data.push_back(savedClipboardData);
ret.size.push_back(currentClipboardFormatSize);
}
CloseClipboard();
}
return ret;
}
但问题是没有办法知道剪贴板在每种格式中的大小
【问题讨论】: