헤더파일: 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 |