물론 FindWindow를 호출하여 할 수도 있다. 그러나 같은 이름을 가진 프로세서의 핸들을
모두 가지고 오기 때문에 실용적이지 못하다.
뮤텍스를 이용한 방법으로 그 대안을 찾았다.
뮤텍스는 스레드 동기화에서 사용하는데 이를 프로그램의 첫 시작이 되는 APP내에서 기술해 주면 간단히 해결할 수 있다.
// App.h
// mutex 핸들 선언
// Mutex
HANDLE m_hWndMutex ;
// App.cpp
// 가상 소멸자를 만들고
CDHG2000App::~CDHG2000App()
{
CloseHandle( m_hWndMutex ) ;
}
// InitInstance()
// 앞 부분에 다음과 같이 선언
//==================================================================================================================
// DHG2000이 실행중인지 찾는다.
m_hWndMutex = NULL ;
m_hWndMutex = ::OpenMutex( MUTEX_ALL_ACCESS, FALSE, _T("DHG2000") ) ;
if ( m_hWndMutex == NULL )
{
::CreateMutex( NULL, FALSE, _T("DHG2000") ) ;
}
else
{
AfxMessageBox( _T("Already Running DHG2000") ) ;
return -1 ;
}
//==================================================================================================================
'Programming > MFC' 카테고리의 다른 글
레지스트리에 등록된 프로그램을 실행 시키기 (0) | 2006.09.06 |
---|---|
System Error Codes (0) | 2006.09.05 |
윈도우 클래스 이름을 얻어주는 Spy++ (0) | 2006.08.31 |
HyperLink Static (0) | 2006.08.26 |
File 삭제 (0) | 2006.08.22 |