使用剪贴板实现进程间通信

/*
把数据放到剪贴板
*/
void CSendClipboardDlg::OnBnClickedOk()
{
CString str;

GetDlgItemText(IDC_EDIT1, str);
if(!OpenClipboard())
return;
EmptyClipboard();
HGLOBAL hClipboardData
= GlobalAlloc(GMEM_DDESHARE, str.GetLength() + 1);
char *pchData = (char *)GlobalLock(hClipboardData);
strcpy(pchData, LPCSTR(str));
GlobalUnlock(hClipboardData);
SetClipboardData(CF_TEXT, hClipboardData);
CloseClipboard();
}

 

/*
从剪贴板中提取数据
*/
void CRecvClipboardDlg::OnBnClickedOk()
{
CString str;

if(!OpenClipboard())
return;
if(IsClipboardFormatAvailable(CF_TEXT) || IsClipboardFormatAvailable(CF_OEMTEXT))
{
HANDLE hClipboardData
= GetClipboardData(CF_TEXT);
char *pcData = (char *)GlobalLock(hClipboardData);
str
= pcData;
GlobalUnlock(hClipboardData);
MessageBox(str);
}
else {
MessageBox(
"There is no text!");
}
CloseClipboard();
}

 

posted @ 2010-09-02 22:20  penink  阅读(248)  评论(0)    收藏  举报