2009년 10월 28일 수요일

인스턴스 중복 방지

App의 InitInstance에 아래의 코드를 추가한다. Mutext를 이용한 방법이다.

App에 고유한 이름을 정해주어야 한다.

 

HANDLE prevInstance = NULL;
DWORD dwLastError = 0;
prevInstance = CreateMutex(NULL, FALSE, "BROADSTORAGE");
if(prevInstance == NULL){
   AfxMessageBox ("Can't create Mutex!");
   return FALSE;
}
dwLastError = GetLastError ();
if(dwLastError == ERROR_ALREADY_EXISTS){
   if(prevInstance != NULL){      
      CloseHandle (prevInstance);
      prevInstance = NULL;

      HWND hWnd = ::FindWindow("BroadStorage", NULL);
      if(hWnd != NULL)
         ::ShowWindow(hWnd, SW_RESTORE);
   }
  return FALSE;

}

댓글 없음:

댓글 쓰기