#include <Windows.h>
// 写入剪贴板
void CopyToClipboard(const char* pData, int length)
{
if (OpenClipboard(NULL))
{
UINT uFormat = RegisterClipboardFormat(_T("MyData"));
EmptyClipboard();
HGLOBAL hClip = GlobalAlloc(GMEM_MOVEABLE, sizeof(int) + length);//前4字节是长度,接着是数据
if (hClip != NULL)
{
char* pClipBuffer = (char*)GlobalLock(hClip);
memmove(pClipBuffer, &length, sizeof(int));//前4字节是长度
memmove((char*)pClipBuffer + sizeof(int), pData, length);//数据
GlobalUnlock(hClip);
SetClipboardData(uFormat, hClip);
}
CloseClipboard();
}
}
// 从剪贴板读取
void* GetFromClipboard(int& length)
{
void* pData = NULL;
length = 0;
if (OpenClipboard(NULL))
{
UINT uFormat = RegisterClipboardFormat(_T("MyData"));
HANDLE hData = GetClipboardData(uFormat);
if (hData != NULL)
{
char* pClipData = (char*)GlobalLock(hData);
if (pClipData != NULL)
{
memmove(&length, pClipData, sizeof(int));
pData = malloc(length);
memmove(pData, pClipData + sizeof(int), length);
GlobalUnlock(hData);
}
}
CloseClipboard();
}
return pData;
}