孙鑫vc++ 17 进程间通信(1)剪贴板

来源:互联网 发布:集体智慧编程 编辑:程序博客网 时间:2024/06/07 13:25

1.进程间通信方式

(1)剪贴板

(2)匿名管道

(3)命名管道

(4)邮槽

 

2.剪贴板代码

void CClipboardDlg::OnBnClickedBtnSend(){      // TODO: Add your control notification handler code here      UpdateData(TRUE);      //(1)打开剪贴板      if (OpenClipboard())       {             //(2)清空剪贴板,将剪贴板的拥有者设置为当前窗口             EmptyClipboard();             HANDLE hClip;             //(3)为了存储数据,开辟一块大小和格式固定的内存             hClip = GlobalAlloc(GMEM_MOVEABLE,m_strSend.GetLength()+1);             char* pBuf;             //(4)将开辟的内存锁定,并且返回此块内存的指针             pBuf = (char*)GlobalLock(hClip);             strcpy(pBuf,m_strSend);//(5)开始复制控件中的数据进入内存             GlobalUnlock(hClip);//(6)解锁内存,将内存对象的锁计数减一             //(7)将数据放进剪贴板,设置对应的数据格式             SetClipboardData(CF_TEXT,hClip);             //(8)关闭剪贴板,如果不调用此函数,其他应用程序就不能调用剪贴板             CloseClipboard();        }       UpdateData(FALSE);} void CClipboardDlg::OnBnClickedBtnRecv(){        // TODO: Add your control notification handler code here        //(1)打开剪贴板        if (OpenClipboard())          {             //(2)查看剪贴板中是否有此种类型的数据             if (IsClipboardFormatAvailable(CF_TEXT))               {                 //(3)获得剪贴板的内存块首地址                  HANDLE hClip = GetClipboardData(CF_TEXT);                  char* pBuf;                 //(4)锁定内存块并且得到内存块首地址的指针                  pBuf = (char*)GlobalLock(hClip);                 //(5)接触锁定                  GlobalUnlock(hClip);                 //(6)关闭剪贴板                  CloseClipboard();                  m_strRecv = (LPCTSTR)pBuf;                }            }          UpdateData(FALSE);}


 

 

 

原创粉丝点击