受け取る側のアプリケーションクラスのInitInstance()で
SetProp( pFrame->GetSafeHwnd(), "ユニークな名前", HANDLE(1) );
をセットしておく
送る側 受け取る側のメインウインドウを見つける
BOOL CALLBACK FindWindowProc(HWND hwnd, LPARAM lParam)
{
/* 見つかったウィンドウが、すでに起動しているアプリケーションのウィンドウか調べる */
if ( ::GetProp( hwnd, "セットしたユニークな名前" ) ) {
/* アイコン化されているのであれば、元のサイズに戻す */
if ( IsIconic(hwnd) ) {
ShowWindow( hwnd, SW_RESTORE );
}
HWND* foundWin = reinterpret_cast<HWND*>(lParam);
if ( foundWin ) {
*foundWin = hwnd;
}
return FALSE; /* 列挙を中断 */
}
return TRUE; /* 列挙を続ける */
}
を用意しておいて
HWND win = 0;
EnumWindows( &FindWindowProc, LPARAM(&win) );
if ( win ) {
// すでに開いているアプリを前面に出す
SetForegroundWindow(::GetLastActivePopup(win));
// すでに開いているアプリに画像ファイルをオープンさせる
::SendMessage( win, WM_COPYDATA, WPARAM(&wParam), LPARAM(&lParam) );
::SendMessage( win, WM_何らかのメッセージ, 0, 0 );
}