zoukankan      html  css  js  c++  java
  • 进程间通信的WM_COPYDATA的使用

    http://blog.csdn.net/ao929929fei/article/details/6316174

    接收数据的一方

    ON_WM_COPYDATA()

    afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct);

    代码片段:

    [cpp] view plaincopy
     
    1. BOOL CClientDemoDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)  
    2. {  
    3.     if (pCopyDataStruct != NULL)  
    4.     {  
    5.         LPCTSTR pszText = (LPCTSTR)(pCopyDataStruct->lpData);  
    6.         DWORD dwLength = (DWORD)(pCopyDataStruct->cbData);  
    7.         TCHAR szRecvText[1024] = {0};  
    8.         memcpy(szRecvText, pszText, dwLength);  
    9.         MessageBox(szRecvText, _T("Test"), MB_OK);  
    10.     }  
    11.   
    12.     return CDialog::OnCopyData(pWnd, pCopyDataStruct);  
    13. }  

    发送数据的一方

    代码片段:

    [cpp] view plaincopy
     
    1. CString strWindowTitle =  _T("ClientDemo");  
    2.     CString strDataToSend = _T("Hello, Everyone fsdfsdfsdfdsfds,this is a test demo!");  
    3.   
    4.     HWND hOtherWnd = ::FindWindow(NULL, strWindowTitle.GetBuffer(0));  
    5.     if (hOtherWnd != NULL && ::IsWindow(hOtherWnd))  
    6.     {  
    7.         COPYDATASTRUCT cpd;  
    8.         cpd.dwData = 0;  
    9.         cpd.cbData = strDataToSend.GetLength() * sizeof(TCHAR);  
    10.         cpd.lpData = (void*)strDataToSend.GetBuffer(0);  
    11.         HRESULT hResult = ::SendMessage(hOtherWnd, WM_COPYDATA, (WPARAM)(AfxGetApp()->m_pMainWnd), (LPARAM)&cpd);  
    12.         strDataToSend.ReleaseBuffer();  
    13.     }  

    OK了,就这么简单

    WM_COPYDATA消息主要目的是允许在进程间传递少量只读数据。SDK文档推荐用户使用SendMessage()函数,接收方在数据复制完成前不返回,这样发送方就不可能删除和修改数据。

  • 相关阅读:
    移动端
    移动端
    Jmeter-接口功能测试
    Jmeter-连接 MySQL数据库
    Jmeter-安装与配置
    postman接口功能测试
    移动端
    移动端
    loadrunner实战篇
    【转载】格式化存储装置成为 Ext2/Ext3/Ext4 档案系统
  • 原文地址:https://www.cnblogs.com/kex1n/p/3198686.html
Copyright © 2011-2022 走看看