wm copydata 進城通訊

2021-07-10 09:51:20 字數 1962 閱讀 9466

void csendmessagedlg::onsendcopydat()

copydatastruct cpd; // 給copydatastruct結構賦值

char *ch = "1234";

cpd.dwdata = 0; //這個我也沒弄懂 啥意思

cpd.cbdata =strlen(ch)+1; //防止亂碼,因為strlen只計算字串的個數,不計算最後的\0,所以這裡加1

cpd.lpdata = (void*)ch; //內容

//afxmessagebox();

/** * *pwnd_resv,目的視窗的控制代碼,

* wm_copydata, 傳遞的值型別是

* (wparam)::getforegroundwindow(),獲取當前的主視窗

* (lparam)&cpd 前面定義的結構體

*/::sendmessage(*pwnd_resv, wm_copydata, (wparam)::getforegroundwindow(), (lparam)&cpd);

}

bool cvm_copydata_testdlg::oncopydata(cwnd* pwnd, copydatastruct* pcopydatastruct)

typedef struct tagwndinfo  

wndinfo, *lpwndinfo;

bool callback myenumproc(hwnd hwnd,lparam lparam)

return

true;

} hwnd getprocessmainwnd(dword dwprocid)

hwnd getxhandle(lpctstr strprocessname)//procname 被呼叫程序名稱

if(invalid_handle_value == handle32snapshot)

processentry32 pentry;

pentry.dwsize = sizeof(processentry32);

if(process32first(handle32snapshot,&pentry))

while((!b_found) && process32next(handle32snapshot,&pentry))

}if(b_found)

}dword d = getlasterror();

closehandle(handle32snapshot);

return

null;

}void onsendcopydat()

copydatastruct cpd; // 給copydatastruct結構賦值

char *ch =

"1234";

cpd.dwdata =

0; //這個我也沒弄懂 啥意思

cpd.cbdata =strlen(ch)+

1; //防止亂碼,因為strlen只計算字串的個數,不計算最後的\0,所以這裡加1

cpd.lpdata = (void

*)ch; //內容

//afxmessagebox();

/** * *pwnd_resv,目的視窗的控制代碼,

* wm_copydata, 傳遞的值型別是

* (wparam)::getforegroundwindow(),獲取當前的主視窗

* (lparam)&cpd 前面定義的結構體

*/::sendmessage(pwnd_resv, wm_copydata, (wparam)::getforegroundwindow(), (lparam)&cpd);

}

使用WM COPYDATA訊息通訊

對於少量資料可以用wm copydata方便地實現通訊。由於sendmessage 是阻塞的,只有接收方響應了訊息,sendmessage 才能返回,否則一直阻塞。所以,對於大量資料來說,用sendmessage 就容易造成視窗假死。在win32中,wm copydata訊息主要目的是允許在程序間傳...

用WM COPYDATA實現程序通訊

用wm copydata的前提 1,知道接收訊息程序的控制代碼。2,接收訊息程序過載了wm copydata訊息對映 傳送端 void csenddlg onbnclickedsend 接收端 宣告afx msg bool oncopydata cwnd pwnd,copydatastruct pc...

程序通訊 使用WM COPYDATA訊息通訊

使用wm copydata訊息通訊 對於少量資料可以用wm copydata方便地實現通訊。由於sendmessage 是阻塞的,只有接收方響應了訊息,sendmessage 才能返回,否則一直阻塞。所以,對於大量資料來說,用sendmessage 就容易造成視窗假死。通過wm copydata訊息...