采用剪贴板的方法,完成进程之间的通信。
1.把数据发送到剪贴板上
void CClipBoardDlg::OnBnClickedButtonSend()
{
if (OpenClipboard())//打开剪贴板
{
CString csTemp;//保存发送编辑框内的数据
HANDLE hClip;//保存调用GlobalAlloc函数后分配的内存对象的句柄
char *pBuf;//保存调用AllocLock函数后返回的内存地址
EmptyClipboard();//情况剪贴板上的数据
GetDlgItemText(IDC_EDIT_SEND,csTemp);//得到发送编辑框中的内容
hClip = GlobalAlloc(GMEM_MOVEABLE,csTemp.GetLength()+1);//分配内存
pBuf = (char*)GlobalLock(hClip);//内存块加锁,将句柄转化为指针
strcpy(pBuf,csTemp);
GlobalUnlock(hClip);//内存块解锁
SetClipboardData(CF_TEXT,hClip);//向剪贴板上放置数据
CloseClipboard();//关闭剪贴板
}
}2、得到剪贴板上的内容
void CClipBoardDlg::OnBnClickedButtonReceive()
{
if (OpenClipboard())//打开剪贴板
{
if (IsClipboardFormatAvailable(CF_TEXT))//判断剪贴板上是否存在文本格式
{
HANDLE hClip;
char *pBuf;
hClip = GetClipboardData(CF_TEXT);//获取剪贴板文本数据
pBuf = (char *)GlobalLock(hClip);
GlobalUnlock(hClip);
SetDlgItemText(IDC_EDIT_RECEIVE,pBuf);//将剪贴板上的内容显示在编辑框里
}
CloseClipboard();//关闭剪贴板
}
}版权声明:本文为hk627989388原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。