日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

VC跨进程数据(结构体)传递-WM_COPYDATA

發(fā)布時間:2023/12/9 c/c++ 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VC跨进程数据(结构体)传递-WM_COPYDATA 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

兩個測試程序,都是MFC基于對話框的應(yīng)用程序,一個是發(fā)送者,一個是接收者。

兩個程序都使用同一個結(jié)構(gòu)體:

typedef struct {char imsi[20];char options[512]; }_tagResult;
發(fā)送者

按鈕點擊事件:

void CCardXSenderDlg::OnButton1() {HWND hwnd = ::FindWindow(NULL, "CardXApp");if(hwnd){static _tagResult result;static COPYDATASTRUCT sendData;ZeroMemory(&result, sizeof(_tagResult));strcpy(result.imsi, "result_imsi0");strcpy(result.options, "result_options0");ZeroMemory(&sendData, sizeof(sendData));sendData.lpData = &result;sendData.cbData = sizeof(result);::SendMessage(hwnd, WM_COPYDATA, NULL, (LPARAM)&sendData); // ::PostMessage(hwnd, WM_COPYDATA, NULL, (LPARAM)&sendData); // can't use ::PostMessage()} }
接收者就是一個 WM_COPYDATA的實現(xiàn)函數(shù)

BOOL CCardXAppDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) {CString msg;_tagResult result;memcpy(&result, pCopyDataStruct->lpData, sizeof(result));msg.Format("imsi=[%s], options=[%s]", result.imsi, result.options);MessageBox(msg);return CDialog::OnCopyData(pWnd, pCopyDataStruct); }
完成了上面的工作就可以測試了,只要點擊發(fā)送者的按鈕,接收端就可以接收到發(fā)過來的消息了。

注意:發(fā)送WM_COPYDATA消息時,必須使用SendMessage,不能使用PostMessage,否則接收端會收不到消息的。

總結(jié)

以上是生活随笔為你收集整理的VC跨进程数据(结构体)传递-WM_COPYDATA的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。