多重起動を防止する。
アプリが起動しているときは速攻で終了させます。
まず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; // 追加
:
:
};
|
[ 戻る ]