zoukankan      html  css  js  c++  java
  • win ce 下的进程间通信--copydata方式

    使用WM_COPYDATA的消息通信,保证发送数据从原进程到目标进程,允许在进程间传递少量的只读数据,使用sendmessage()函数,接收方在数据完成复制前不能返回。

    //函数原型

    LRESULT SendMessage(
    HWND hWnd, //接受消息的窗口句柄 UINT Msg, //要发送的消息,这里是WM_COPYDATA WPARAM wParam, LPARAM lParam );
    //copydata的结构体
    typedef struct tagCOPYDATASTRUCT {
      DWORD dwData;    //用户自定义数据
      DWORD cbData;    //发送数据的大小
      PVOID lpData;    //指针,指向要发送的数据
    } COPYDATASTRUCT;
     1 //发送进程的主程序
     2 //send the data
     3 void DataSend(HWND hDlg)
     4 {
     5     TCHAR buf[128] ={0} ;
     6     COPYDATASTRUCT cds;
     7     GetDlgItemText(hDlg, IDC_EDIT, buf, sizeof(buf));         //gain the string from the EDIT control
     8 
     9     cds.dwData = 1;
    10     cds.cbData = _tcslen(buf)*2;
    11     cds.lpData = (PVOID)buf;
    12     // hwnd为接收消息的目标窗口句柄
    13     //(WPARAM)hWnd可以是NULL或者发送消息的窗口句柄
    14     //COPYDATASTRUCT结构体指针
    15     SendMessage(FindWindow(NULL, TEXT("copydata")), WM_COPYDATA, NULL,(LPARAM)&cds);
    16 }
    1 //接收进程的主程序
    2 case WM_COPYDATA:
    3             {    
    4                 COPYDATASTRUCT *pcds = (COPYDATASTRUCT *)lParam;
    5                 memcpy(databuf, pcds->lpData, pcds->cbData);      //copy the data to buffer
    6                 //send the receiving data to the list and display
    7                 SendDlgItemMessage(hWnd, IDC_RPTLIST, LB_ADDSTRING,0,(LPARAM)(LPCTSTR)databuf);
    8             }
    9             break;
  • 相关阅读:
    linux的usr目录的全称是什么
    python多线程与多进程及其区别
    redis禁用危险命令
    测试文档
    mysql5.7.23windows安装
    Nginx如何处理手机端和PC端跳转不同页面
    nginx if多条件判断
    centos7单用户模式修改密码
    Django其四
    Django简单搭建编辑页面
  • 原文地址:https://www.cnblogs.com/philospy/p/4401684.html
Copyright © 2011-2022 走看看