Sfruttando questa proprietà, insieme al metodo CreateMutex, si può verificare se una istanza non sia già in esecuzione. CreateMutex infatti restituisce un HANDLE all'oggetto mutex creato che sarà uguale a ERROR_ALREADY_EXISTS se questo già esiste (si vedano [1] e [2]).
#include <Windows.h> #include <iostream> BOOL IsAlreadyRunning() { HANDLE hMutex = NULL; hMutex = CreateMutex(NULL, FALSE, TEXT("TEST")); if (hMutex) { if (ERROR_ALREADY_EXISTS == GetLastError()) return TRUE; } return FALSE; } int wmain(int argc, wchar_t* argv[]) { if (IsAlreadyRunning()) std::cout << "Already Running!!!!\n"; else std::cout << "First Run!\n"; std::cout << "Press any key to exit!"; std::getchar(); return 0; }
Riferimenti:
[1] Mutex
[2] CreateMutexA function
Nessun commento:
Posta un commento