kyuseo의 게임 프로그래밍

뮤텍스(Mutex, CreateMutex)를 활용한 프로그램 하나만 실행하기 본문

C++ 개발

뮤텍스(Mutex, CreateMutex)를 활용한 프로그램 하나만 실행하기

kyuseo 2007. 10. 30. 13:00

개요..

 

온라인게임이나 메신저 프로그램, 각종 P2P 프로그램들은 프로그램 하나만 실행이 됩니다.

 

이와 같이 하나의 프로그램만 실행 시키는 방법은 뮤텍스(Mutex)라는 동기화 객체를 사용하는데 그 객체의 사용법을 알아봅니다.

 

다운로드

 

 

 

코드

 

1. APP 헤더에 선언한다.

 

class Cmfc_dlg2App : public CWinApp

{

    HANDLE m_hMutex;

 

 

2. 생성자에서 초기화한다.

 

Cmfc_dlg2App::Cmfc_dlg2App()

{

    m_hMutex = NULL;

}

 

 

3. InitInstance 에서 뮤텍스를 생성한다.

 

BOOL Cmfc_dlg2App::InitInstance()

{    

    HANDLE m_hMutex = CreateMutex(NULL,TRUE, "뮤텍스를이용한한번만실행되는윈도우");

    if( GetLastError() == ERROR_ALREADY_EXISTS )

    {

        AfxMessageBox( "이미프로그램이실행되고있습니다" );

        return FALSE;

    }

 

 

4. ExitInstance 에서 생성된 뮤텍스를 제거한다.

 

int Cmfc_dlg2App::ExitInstance()

{

    if( m_hMutex != NULL )

        CloseHandle( m_hMutex );

 

    return CWinApp::ExitInstance();

}