多重起動を防止する。
アプリが起動しているときは速攻で終了させます。
まずCXXXApp::InitInstance()を書きかえる。 |
BOOL CXXXApp::InitInstance() { : : m_hMutex = NULL; // m_hMutexはHANDLE型のメンバ変数。 HANDLE hMutex = CreateMutex(FALSE,0,_T("CXXXApp")); // CXXXAppは適当な文字列。 //すでに起動している場合終了させる if(::GetLastError() == ERROR_ALREADY_EXISTS ) { CloseHandle(hMutex); return FALSE; } : : return TRUE; } |
次にクラスウィザードでExitInstance()を追加する。 |
int CXXXApp::ExitInstance() { // Mutexを開放する。開放しないと次から起動しなくなる。 ReleaseMutex(m_hMutex); CloseHandle(m_hMutex); return CWinApp::ExitInstance(); } |
忘れていけないのがm_hMutexをHANDLE型のメンバ変数で登録する。 |
class CPPChangeApp : public CWinApp { : : private: HANDLE m_hMutex; // 追加 : : }; |
[ 戻る ]