Я играл с буфером обмена 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;
}
Но проблема в том, что невозможно определить, насколько большой буфер обмена в каждом формате