複数起動の抑制

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
メールはこちらから