26. FAQ o Win API

Q> How to trace that only one copy of application worked at present? 
A> 
BOOL WeAreAlone (LPSTR szName) 
{ 
   HANDLE hMutex = CreateMutex (NULL, TRUE, szName); 
   if (GetLastError () == ERROR_ALREADY_EXISTS) 
   { 
      CloseHandle (hMutex); 
      return FALSE; 
   }
   return TRUE; 
}

And in beginning WinMain or main - 

if (WeAreAlone ("Some_Unique_Name_Or_Other")) 
{ 
   //Proceed 
}
else 
{ 
   MessageBox (NULL, "Error", "Error: app already running!", MB_OK|MB_ICONERROR); 
   exit (1); 
}

2000 (c) DM