VC跨进程数据(结构体)传递-WM_COPYDATA
生活随笔
收集整理的這篇文章主要介紹了
VC跨进程数据(结构体)传递-WM_COPYDATA
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
兩個測試程序,都是MFC基于對話框的應用程序,一個是發送者,一個是接收者。
兩個程序都使用同一個結構體:
typedef struct {char imsi[20];char options[512]; }_tagResult;發送者:
按鈕點擊事件:
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的實現函數: 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); }
完成了上面的工作就可以測試了,只要點擊發送者的按鈕,接收端就可以接收到發過來的消息了。
注意:發送WM_COPYDATA消息時,必須使用SendMessage,不能使用PostMessage,否則接收端會收不到消息的。
總結
以上是生活随笔為你收集整理的VC跨进程数据(结构体)传递-WM_COPYDATA的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《深入理解Hadoop(原书第2版)》—
- 下一篇: PyRun_SimpleFile()崩溃