Sollyu

  • 捐赠
  • 关于
  1. 首页
  2. 原创文章
  3. 正文

利用剪贴板来实现进程间的通信

2014年6月5日 3958点热度 0人点赞 0条评论

预览

利用剪贴板来实现进程间的通信

正文

下面我们来利用剪贴板来实现进程间的通信:

第一步:我们在资源中设置相关的对话框的控件

第二步:我们来编写发送端程序

void CClipboardDlg::OnBtnSend() 
{
    // TODO: Add your control notification handler code here
    if (OpenClipboard())                    //判断剪贴板是否可以被打开
    {
        CString str;                        //定义一个数据对象
        HANDLE hclip;                       //定义一个句柄
        char *pbuf;
        EmptyClipboard();                   //清空剪贴板上的数据
        GetDlgItemText(IDC_EDIT_SEND,str);  //去获的发送端的数据
        hclip=GlobalAlloc(GMEM_MOVEABLE,str.GetLength()+1);//分配一个内存的对象
        pbuf=(char*)GlobalLock(hclip);      //将获取的对象转化为指针
        strcpy(pbuf,str);                   //将我们的cstring对象的数据拷贝到我们的内存中
        GlobalUnlock(hclip);                //解锁
        SetClipboardData(CF_TEXT,hclip);    //设置剪贴板
        CloseClipboard();                   //关闭剪贴板
    }
}

第三步:我们来编写接受端程序

void CClipboardDlg::OnBtnRecv() 
{
    // TODO: Add your control notification handler code here
    if (OpenClipboard())//判断剪贴板是否可以打开
    {
        if (IsClipboardFormatAvailable(CF_TEXT))//判断剪贴板是否可用
        {
            HANDLE hclip;                       //定义句柄变量
            char *pbuf;
            hclip=GetClipboardData(CF_TEXT);    //去得到指定格式的数据
            pbuf=(char*)GlobalLock(hclip) ;     //将数据转化为内存地址
            GlobalUnlock(hclip);                //关闭
            SetDlgItemText(IDC_EDIT_RECV,pbuf); //将我们从剪贴板上得到的数据放到我们的接受端上
            CloseClipboard();                   //关闭剪贴板
        }
    }
}
本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: C++ MFC 剪贴板 进程间 通信
最后更新:2014年6月5日

sollyu

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2021 sollyu.com. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

苏ICP备15007531号