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()函数,接收方在数据复制完成前不返回,这样发送方就不可能删除和修改数据。

  • 相关阅读:
    解释器模式
    java-->Hashtable简单使用
    HashTable和HashMap区别
    享元模式
    Beanutils.copyProperties( )用法
    删除List集合中的元素方法
    Date中before和after方法的使用
    Spring定时任务@Scheduled注解使用方式
    Oracle中INSTR、SUBSTR和NVL的用法
    StringBuffer的delete方法与deleteCharAt方法的区别。
  • 原文地址:https://www.cnblogs.com/kex1n/p/3198686.html
Copyright © 2011-2022 走看看