SetClipboardData
函数需要HANDLE
引用;我在转换要在函数中使用的字符串时遇到麻烦。
这是我的代码:
char* output = "Test";
HLOCAL hMem = LocalAlloc( LHND,1024);
char* cptr = (char*) LocalLock(hMem);
memcpy( cptr, output, 500 );
SetClipboardData(CF_TEXT, hMem);
LocalUnlock( hMem );
LocalFree( hMem );
CloseClipboard();
我在这里做错什么,正确的做法是什么?
谢谢。
最佳答案
阅读MSDN文档中的SetClipboardData函数。看来您缺少一些步骤,过早地释放了内存。首先,你必须打电话
OpenClipboard,然后才能使用SetClipboardData。其次,系统获取传递给剪贴板的内存的所有权,并且必须将其解锁。另外,内存必须是可移动的,这需要与GlobalAlloc一起使用的GMEM_MOVEABLE标志(而不是LocalAlloc)。
const char* output = "Test";
const size_t len = strlen(output) + 1;
HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, len);
memcpy(GlobalLock(hMem), output, len);
GlobalUnlock(hMem);
OpenClipboard(0);
EmptyClipboard();
SetClipboardData(CF_TEXT, hMem);
CloseClipboard();
关于c - 如何在C中将字符串复制到剪贴板?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1264137/