戻る

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;
}
inserted by FC2 system