私は窓のクリップボードで遊んでいます。私はあなたがフォーマットを提供するならばあなたがクリップボードを見ることができることに気づいた。私は、クリップボードの生の内容をダンプできるプログラムを見てきました。私が意味するものの例についてはhttp://www.autohotkey.com/docs/misc/Clipboard.htm#ClipboardAllを見てください。クリップボードのデータをC++でrawフォーマットで取得する
私がしたいことは、クリップボードをバックアップし、操作してから、プログラムが完了したときに復元することです。
私はそれが実際に事EDITだ場合non-.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;
}
しかし、問題は、theresの方法はありません:
私はこれまでのところ、これを試してみましたクリップボードの大きさを各形式で表します。
@ Dave18これまでに試したことを貼り付けて、それが私の主な問題です – qwertymk
この手順はフォーマットによって異なります。[標準クリップボード形式](http://msdn.microsoft.com/en-us/library/ff729168)を参照してください。 aspx)。範囲(CF_GDIOBJFIRST〜CF_GDIOBJLAST)のフォーマットとプライベートフォーマットはすべて 'GlobalAlloc'を使用するので、' GlobalSize'と 'GlobalLock'への呼び出しはうまく動作します(' GlobalLock'への呼び出しは 'GlobalUnlock'と一致します)。 –
'CF_BITMAP'、' CF_ENHMETAFILE'、 'CF_HDROP'のようなフォーマットに注意してください - クリップボード上のオブジェクトは' HBITMAP'、 'HENHMETAFILE'、' HDROP'です* '* HGLOBAL'ではありません! –