二重起動防止後アクティブ表示

解決


yasui  2007-01-26 17:57:21  No: 64295

クラス::InitInstance()
{
  HANDLE hMutex;

  /****** ミューテックス作成 ******/
  hMutex = CreateMutex(NULL, TRUE, "aiueo");
  if ( GetLastError() == ERROR_ALREADY_EXISTS ){
    AfxMessageBox( "既に起動しています。" );

    // ①ここにアクティブ処理??

    return FALSE;
  }

  /****** ミューテックス解放 ******/
  ReleaseMutex(hMutex);

  return FALSE;
}

アプリケーションの二重起動を上記のように防止していますが、
"既に起動しています。"のメッセージダイアログ表示後、すで
に起動しているダイアログをアクティブにしたいのですが、ど
のようにしたらよいでしょうか。

宜しくお願い致します。


Blue  2007-01-26 18:20:04  No: 64296

アプリケーションの2重起動を防止するには?
http://techtips.belution.com/ja/vc/0025/

さらにウィンドウをアクティブ化するには?
を参考にしてください。

ダイアログのタイトルで対象のウィンドウハンドルを取得できるようであれば、
それを使ってもいいかとおもいます。

HWND hWnd = ::FindWindow("#32770", "ダイアログのタイトル");

ちなみにダイアログのクラス名を独自のクラス名に変えることも可能です。
[Microsoft サポートオンライン]MFC ダイアログ ボックスの独自のウィンドウ クラス名を指定する方法。
http://support.microsoft.com/default.aspx/kb/251059/ja


yasui  2007-01-26 20:05:25  No: 64297

お返事ありがとうございました。

下記のように初期のダイアログクラス名"#32770"とダイアログのタイトル
を使用してウィンドウハンドルを取得し、実現することができました。

ありがとうございました。


yasui  2007-01-26 20:06:15  No: 64298

すみません。"下記のように"は間違いです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加