複数起動の抑制
Mutexを使ってアプリケーションの二重起動を防止します。
メイン関数WinMain()でミューテックスを作成する
既に作成済みだとエラーになるからGetLastError()でチェックして
ERROR_ALREADY_EXISTSならFALSEでリターンする。
#define APP_NAME "TestApp.exe" // アプリケーション名称
HANDLE m_hMutexApp; // 二重起動防止用ミューテックス
m_hMutexApp = CreateMutex(NULL,TRUE,APP_NAME);
if(GetLastError() == ERROR_ALREADY_EXISTS)
return FALSE;
アプリケーション終了するときに作成したミューテックスを解放してハンドル閉じること
ReleaseMutex(m_hMutexApp); // ミューテックスの解放
CloseHandle(m_hMutexApp); // ハンドル閉じる
MFCならMutex作成するのはInitInstance()で、削除はExitInstance()でどうぞ
#define APP_NAME "TestApp.exe" // アプリケーション名称
HANDLE m_hMutexApp; // 二重起動防止用ミューテックス
BOOL CTestApp::InitInstance()
{
・
・
m_hMutexApp = CreateMutex(NULL,TRUE,APP_NAME);
if(GetLastError() == ERROR_ALREADY_EXISTS)
return FALSE;
・
・
}
int CTestApp::ExitInstance()
{
・
・
ReleaseMutex(m_hMutexApp); // ミューテックスの解放
CloseHandle(m_hMutexApp); // ハンドル閉じる
return CWinApp::ExitInstance();
}
(Aug 26,2002)
∧index
>>Next
Back to home
メールはこちらから