오늘은 간단하게 CreateMutex를 사용하여 중복 실행 방지를 알아보도록 하겠습니다.
뮤텍스는 공유된 자원에 하나의 쓰레드만 접근할 수 있게 다른 쓰레드의 접근을 막는 방식중 하나입니다.
이 방식을 사용하여 보통 중복 실행을 방지하는 기능으로 많이 만듭니다.
MFC를 예제로 사용하는 방법을 알아보겠습니다.
프로젝트 생성 후 아래와 같이 “프로젝트명칭”App::IInitInstance()에 코딩해주세요
// CMFCApplication1App 초기화
BOOL CMFCApplication1App::InitInstance()
{
// 입력
HANDLE hMutex = ::CreateMutex( NULL, TRUE, _T( "mtx_running_Application_exe" ) );
if ( ERROR_ALREADY_EXISTS == GetLastError() )
{
AfxMessageBox( _T( "프로그램이 이미 실행 중입니다." ) );
return FALSE;
}
// 응용 프로그램 매니페스트가 ComCtl32.dll 버전 6 이상을 사용하여 비주얼 스타일을
// 사용하도록 지정하는 경우, Windows XP 상에서 반드시 InitCommonControlsEx()가 필요합니다.
// InitCommonControlsEx()를 사용하지 않으면 창을 만들 수 없습니다.
// ...
}
실행해 보시면 아래와 같이 중복 실행이 방지됩니다.