戻る
SendMessageでプロセス間通信を行う
FindWindow関数で通信相手のウィンドウハンドルを取得する。
SendMessage関数でWM_COPYDATAを送信する。
受信側はWM_COPYDATA受信時に呼び出されるOnCopyData関数をオーバーライドする。
サンプルコード
送信側
// 通信相手のウィンドウクラスを取得する。
CWnd* cWnd;
cWnd = FindWindow("クラス名", "キャプション");
// 送信するデータを設定する。
COPYDATASTRUCT stData;
stData.dwData = 0; // 任意の値を設定
stData.cbData = sizeof(データ); // データサイズを設定
stData.lpData = データ; // データの先頭アドレスを設定
// メッセージを送信する。
cWnd->SendMessage(WM_COPYDATA, (WPARAM)NULL, (LPARAM)&stData);
受信側
BOOL CSampleDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
CDialog::OnCopyData(pWnd, pCopyDataStruct);
引数のpCopyDataStruct内に受信データが格納されている。
任意の処理を行う。
return TRUE;
}