Windows上で多重起動を防止する方法
Top -> プログラミング -> WindowsSDK プログラミング -> Windows上で多重起動を防止する方法
1.Windows上で多重起動を防止する方法について

ここではWindowsSDKで、「FindWindow関数」又は「Mutex」を使用しアプリケーションの多重起動を防止する方法を解説いたします。

2.FindWindow関数を使用する方法

WinMain関数内の変数を宣言した後に、FindWindow関数ですでに対象アプリケーションが起動しているか調べます。 見つかれば、アプリケーションの終了処理を行うだけです。

LPCSTR lpszClassName = "MSPreventionB"; LPCSTR lpszWinName = "Multiplex starting prevention Test B"; int APIENTRY WinMain(...省略) { ...省略 if(FindWindow(lpszClassName, lpszWinName)!=NULL){ /* 二重起動防止 */ MessageBox(NULL, "すでに起動しております。" ,"Multiplex starting prevention Test B", MB_OK); return FALSE; } ...省略 }
3.Mutexを使用する方法

WinMain関数内の変数を宣言した後に、CreateMutex関数ですでに対象アプリが起動しているか調べます。 見つかれば、アプリケーションの終了処理を行うだけです。

異なるのは、アプリケーションが起動し終了するときMutexのハンドルを解放する必要があるということです。

HANDLE hMSP; /* 多重起動防止用Mutex Handle */ int APIENTRY WinMain(...省略) { ...省略 hMSP = CreateMutex(NULL, TRUE, "MultiplexStartingPreventionTest"); /* すでに起動しているか判定 */ if(GetLastError() == ERROR_ALREADY_EXISTS){ /* すでに起動している。*/ MessageBox(NULL, "すでに起動しております。" ,"Multiplex starting prevention Test C", MB_OK); ReleaseMutex(hMSP); CloseHandle(hMSP); return FALSE; } ...省略 /* Mutexの開放 */ ReleaseMutex( hMSP ); CloseHandle( hMSP ); return msg.wParam; }
戻る
カウンター