ミューテックスを使って排他処理を行う

ミューテックス(Mutual Exclusive)を使って排他処理を行います。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの設定

  1. 新規プロジェクトで[空のプロジェクト]を作成します。
  2. メインプログラムのソースコードです。
    /*************************************/
    /*★ 多重起動を検出する    前田 稔 ★*/
    /*************************************/
    #include    <windows.h>
    
    HANDLE  hme;
    
    //★ Windows Main 関数
    int  WINAPI  WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int nCmdShow)
    {
        if ((hme = CreateMutex(NULL,TRUE,"MUTEX object name")) == NULL) return 0;
        if (GetLastError() == ERROR_ALREADY_EXISTS)
        {   MessageBox(NULL,"既に起動されています","多重起動チェック",MB_OK);
            return 0;
        }
        MessageBox(NULL,"正常に起動されました","多重起動チェック",MB_OK);
        return 0;
    }
        
  3. CreateMutex() でミューテックスオブジェクトを生成します。
    ERROR_ALREADY_EXISTS のときは、既に同じプログラムが起動されている時です。
    プログラムが終了するとミューテックスオブジェクトは自動的に開放されます。

超初心者のプログラム入門(Win32API C++)