WinCE应用程序中实现进程间通信的方式有很多种,比如说:剪贴板、命名管道、匿名管道、邮槽、共享内存、文件映射、Socket等等,其中最简单的一种应该是

WM_COPYDATA消息,现写一个小例,以做备忘:

现有两个程序A和B,A做为发送数据方,B做为接收数据方。

A(发送端)程序中的程序片段如下:

  HWND hwnd = ::FindWindow(NULL, _T("B"));
      if (NULL == hwnd)
      {
         MessageBox(NULL, _T("没有找到程序B"), _T("提示"), NULL);
      }
      char *buf = new char[10];
      memset(buf, 0, 10);
      sprintf_s(buf, 10, "%s", "Hello");
      COPYDATASTRUCT cds;
      ZeroMemory(&cds, sizeof(COPYDATASTRUCT));
      cds.dwData = 0;
      cds.cbData = 10;
      cds.lpData = (PVOID)buf;
      ::SendMessage(hwnd, // hwnd为接收消息的目标窗口句柄

          WM_COPYDATA,

          NULL/*(WPARAM)hWnd*/,//可以是NULL或者发送消息的窗口句柄

           (LPARAM)&cds);//COPYDATASTRUCT结构体指针
      delete []buf;

B(接收端)程序片段如下:

  case WM_COPYDATA:
     {
       MessageBox(NULL, _T("B程序收到消息 WM_COPYDATA"), _T("提示"), NULL);
       COPYDATASTRUCT *pcds = (COPYDATASTRUCT *)lParam;
       printf("pcds->cbData is :%d\n", pcds->cbData);
       printf("pcds->lpData is :%s\n", (char *)pcds->lpData);
    }

posted on 2011-05-14 19:20  xFreedom  阅读(1078)  评论(0编辑  收藏  举报