Q: How can I limit my application to one instance?
A: You need to create a named mutex semaphore when you start your application. When the second one starts it tries to get access to the mutex but will fail...
Code:// app.h class CYourApp : public CWinApp { ... private: HANDLE hMutex; }; // app.cpp BOOL CYourApp::InitInstance() { // Create mutex hMutex = ::CreateMutex(NULL, TRUE, "GlobalMutex"); switch(::GetLastError()) { case ERROR_SUCCESS: // Mutex created successfully. There is no instance running break; case ERROR_ALREADY_EXISTS: // Mutex already exists so there is a running instance of our app. return FALSE; default: // Failed to create mutex by unknown reason return FALSE; } }




Reply With Quote