26-进程间通信:剪切板

进程间通信:剪切板

1.进程间通信方式汇总

  • socket 编程 IP 和端口

  • 剪切板

    • 剪切板的内核对象
  • 邮槽

    • 邮槽的内核对象
  • 匿名管道

  • 命名管道

  • 信息

    • SendMessage

2.剪切板通信

void CClipBoardDlg::OnBnClickedSendButton()
{
//1.打开剪切板
if (OpenClipboard())
{
//2.清空剪切板
EmptyClipboard();
char* szSendBuf;

//3.获取编辑框的内容
CStringA strSend;
GetDlgItemText(IDC_EDIT_SEND, strSend);
//4.分配内存对象
HANDLE hClip = GlobalAlloc(GMEM_MOVEABLE, strSend.GetLength() + 1);

//5.将剪切板加锁,拷贝内容,解锁
szSendBuf = (char*)GlobalLock(hClip);
strcpy(szSendBuf, strSend);
GlobalUnlock(hClip);

//6.将数据放入剪切板
SetClipboardData(CF_TEXT, hClip);

//7.关闭剪切板
CloseClipboard();
}
}


void CClipBoardDlg::OnBnClickedRecvButton()
{
//1.打开剪切板
if (OpenClipboard())
{
//2.判断剪切板是否可用
if (IsClipboardFormatAvailable(CF_TEXT))
{
char* szRecvBuf;
//3.从剪切板获取数据
HANDLE hClip = GetClipboardData(CF_TEXT);
szRecvBuf = (char*)GlobalLock(hClip);
SetDlgItemTextA(IDC_EDIT_RECV, szRecvBuf);
GlobalUnlock(hClip);

}
//4.关闭剪切板
CloseClipboard();

}
}