フリーソフト

« [BCB] Windowsのメッセージを処理する | トップページ | [BCB] EnumWindowsでコンパイルが通らない »

[BCB] アプリの2重起動を禁止する

Mutexを使用して、アプリケーションの2重起動を禁止する方法です。「プロジェクト」-「ソース表示」で表示されるファイルに以下のようなコードを追記します。

=====

#define MUTEX_ID "Unique_ID_String"  //適当な文字列を設定

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
  try
  {

    HANDLE  hMutex=NULL;

    //2重起動のチェック

    //Mutexを作成してみる
    hMutex = CreateMutex(NULL, true, MUTEX_ID);
    if (hMutex!=NULL) {
      if (GetLastError()==ERROR_ALREADY_EXISTS) { //すでに起動されている
        CloseHandle(hMutex); // 閉じる
        ReleaseMutex(hMutex);// 破棄する

        //すでに起動済みの画面を探して前面に持ってくる処理などを書く

        return 0; //終了
      }
    } else {
      //Mutexの作成に失敗したときの処理
    }

    //この辺はもともと書かれている部分
    Application->Initialize();
       :
    Application->Run();

    //最後に後始末
    CloseHandle(hMutex); // 閉じる
    ReleaseMutex(hMutex); //ミューテクス解除
  }
  catch (Exception &exception)
  {
    Application->ShowException(&exception);
       :
  return 0;
}

« [BCB] Windowsのメッセージを処理する | トップページ | [BCB] EnumWindowsでコンパイルが通らない »

C++Builder」カテゴリの記事

システム関連」カテゴリの記事

コメント

この記事へのコメントは終了しました。