<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      windows進程通信 -- WM_COPYDATA消息

      WM_COPYDATA消息,在win32中用來進行進程間的數據傳輸。

      typedef struct tagCOPYDATASTRUCT {  // cds 
          DWORD dwData; 
          DWORD cbData; 
          PVOID lpData; 
      } COPYDATASTRUCT;

      其中dwData為32位的自定義數據, lpData為指向數據的指針,cbData為lpData指針指向數據的大小(字節數)。

      一般推薦用SendMessage函數進行發送,這樣就能確保在接收方復制數據前避免發送方能修改或刪除數據;

      LRESULT SendMessage(
        HWND hWnd,      // handle of destination window
        UINT Msg,       // message to send
        WPARAM wParam,  // first message parameter
        LPARAM lParam   // second message parameter
      );

      這里:

      hWnd:為接收進程的窗體句柄;

      Msg:WM_COPYDATA;
      wParam:為發送進程的窗體句柄;

      lParam:為指向COPYDATASTRUCT數據結構的指針;

      這里需要注意的:傳輸的COPYDATA數據在發送后要避免被發送進程中的其他線程修改,其次要確保被傳輸的數據中沒有包含接收進程無法訪問的對象的指針或引用。比如:發送進程自身的HDC、HBITMAP之類的東西,它們對于接收進程來說是無效的。另外,接收進程窗體句柄可以通過FindWindow函數獲取:

      const char szDlgTitle[] = "ReceiveProcess";  
      HWND hRecvWindow  = ::FindWindow(NULL, szDlgTitle);

      這里的“ReceiveProcess”為接收進程的名字;

      同時,接收數據的進程中,首先在消息映射表中增加WM_COPYDATA消息映射,然后定義消息映射函數,其函數的格式為:

      BOOL CCanCollectorDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) 
      {
          ....
      }

      主要代碼如下:(這里發送進程發送當前的時間給接收進程)

      發送進程:

      void CProcessCommDlg::OnBTNStart1() 
      {
          const char szDlgTitle[] = "ReceiveProcess";  
          HWND hSendWindow =this->GetSafeHwnd();
          HWND hRecvWindow  = ::FindWindow(NULL, szDlgTitle); 
      
          COPYDATASTRUCT CopyData; 
          char szSendBuf[100];  
          time_t  timenow; 
          time(&timenow);  
          sprintf(szSendBuf, "%s", ctime(&timenow));//注意,ctime()返回的字符串后面帶了'\n'  
          CopyData.dwData = 0;  
          CopyData.cbData = strlen(szSendBuf);  
          szSendBuf[CopyData.cbData - 1] = '\0';  
          CopyData.lpData = szSendBuf;  
          
          ::SendMessage(hRecvWindow, WM_COPYDATA, (WPARAM)hSendWindow, (LPARAM)&CopyData);  
          printf("%s\n", szSendBuf);  
      
      }

      接收進程:

      BEGIN_MESSAGE_MAP(CCanCollectorDlg, CDialog)
          //{{AFX_MSG_MAP(CCanCollectorDlg)
          ON_WM_SYSCOMMAND()
          ON_WM_PAINT()
          ON_WM_QUERYDRAGICON()
          ON_WM_COPYDATA()
          //}}AFX_MSG_MAP
      END_MESSAGE_MAP()
      
      ........
      
      
      BOOL CCanCollectorDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) 
      {
          char szBuffer[300];  
          
          memset(szBuffer, 0, sizeof(szBuffer));  
          sprintf(szBuffer, "dwData:%d cbData:%d\r\nlpData:0x%08x = %s\r\n\r\n",   
              pCopyDataStruct->dwData, pCopyDataStruct->cbData,   
              (PVOID)pCopyDataStruct->lpData, (char*)pCopyDataStruct->lpData);  
      
          
          return CDialog::OnCopyData(pWnd, pCopyDataStruct);
      }
      posted @ 2014-09-26 10:47  紅心李  閱讀(11962)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 白丝乳交内射一二三区| 亚洲人成在线观看网站不卡| 久久精品国产一区二区三| 亚洲中文字幕第二十三页| 激情综合网激情综合网激情| 欧美日产国产精品日产| 国产精品午夜福利精品| 一本色道久久88亚洲精品综合| 国产精品白浆在线观看免费 | 久久久久香蕉国产线看观看伊| 日韩在线不卡免费视频一区| 精品国产迷系列在线观看| 熟女熟妇伦av网站| 亚洲天堂男人影院| av中文字幕国产精品| 日韩av影院在线观看| 亚洲成av人片天堂网无码| 美欧日韩一区二区三区视频| 成人乱人伦精品小说| 精品午夜福利短视频一区| 欧美乱码伦视频免费| 国产伦码精品一区二区| 久久国产成人高清精品亚洲| 亚洲成人www| 亚洲AV高清一区二区三区尤物| 亚洲精品乱码久久久久久蜜桃| 日韩精品中文字幕国产一| 午夜免费无码福利视频麻豆| 国产曰批视频免费观看完| 国产在线一区二区在线视频| 久久精品国产亚洲AⅤ无码| 亚洲v欧美v日韩v国产v| 国产成人8X人网站视频| 国产草草影院ccyycom| 看免费的无码区特aa毛片| 91国在线啪精品一区| 性XXXX视频播放免费直播| av鲁丝一区鲁丝二区鲁丝三区| 亚洲av鲁丝一区二区三区黄| 1024你懂的国产精品| www免费视频com|