アットウィキロゴ

Windows Programming Tips

受け取る側のアプリケーションクラスの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 );
}
最終更新:2015年01月15日 17:23