헤더파일: App Class (.h)
// 뮤텍스 핸들 선언 protected: HANDLE m_hMutex;
소스파일: App Class (.cpp)
#define STRING_MUTEX_NAME "뮤텍스 이름"
#define STRING_CAPTION_NAME "프로그램 이름(Caption)"
//
// 생성자 뮤텍스 핸들 초기화
//
CClassApp::CClassApp()
{
m_hMutex = NULL;
}
//
// 프로그램 중복실행 방지
//
CClassApp::InitInstance()
{
if(NULL == ::OpenMutex(MUTEX_ALL_ACCESS, FALSE, STRING_MUTEX_NAME))
{
// 중복실행이 아니므로 뮤택스 생성
m_hMutex = ::CreateMutex(NULL, FALSE, STRING_MUTEX_NAME);
if(m_hMutex == NULL)
{
AfxMessageBox(_T("프로그램 실행에 실패하였습니다."), MB_OK|MB_ICONEXCLAMATION);
return FALSE;
}
}
else
{
// 중복실행일 경우 기존 열려있는 창을 맨 앞으로 보여줌
// 만약, 창이 최소화 상태라면 최소화 상태 해제
CWnd* pWnd = NULL;
pWnd = CWnd::FindWindow(NULL, STRING_CAPTION_NAME);
if(pWnd != NULL)
{
if(pWnd->IsIconic())
pWnd->ShowWindow(SW_RESTORE);
else
pWnd->SetForegroundWindow();
}
else
{
pWnd = CWnd::FindWindow(NULL, STRING_CAPTION_NAME);
if(pWnd != NULL)
{
if(pWnd->IsIconic())
pWnd->ShowWindow(SW_RESTORE);
else
pWnd->SetForegroundWindow();
}
}
return FALSE;
}
// 기존 코드
}
'개발이야기 > MFC' 카테고리의 다른 글
| fopen_s 파일읽기와 저장 (0) | 2012.06.14 |
|---|---|
| MFC 디렉토리 생성과 삭제 (0) | 2012.05.25 |
| 일정 날짜 기준 로그파일 제거 (1) | 2012.05.17 |
| 로컬 IP주소 얻기 (0) | 2012.05.17 |
| 유니코드 ↔ 안시 변환함수 (0) | 2012.05.16 |