除了将 string 放入剪贴板再用 keybd_event 粘贴出去的方法之外,还有没有什么别的方法了?亲测剪贴板方法会输出乱码。
或者,想不输出乱码,需要注意什么?
函数:
bool CopyToClipboard(const char* pszData, const int nDataLen) {
if(OpenClipboard(NULL)) {
::EmptyClipboard();
HGLOBAL clipbuffer;
char *buffer;
clipbuffer = GlobalAlloc(GMEM_DDESHARE, nDataLen+1);
buffer = (char *)GlobalLock(clipbuffer);
strcpy(buffer, pszData);
GlobalUnlock(clipbuffer);
SetClipboardData(CF_TEXT, clipbuffer);
CloseClipboard();
return TRUE;
}
return FALSE;
}
使用方法:
string q = "Hello World!";
CopyToClipboard (q.c_str (), q.size ());