Instanz vom Programm

kerian

Erfahrenes Mitglied
Hallo,
wie kann ich es verhindern das ein Programm zun zweiten mal gestartet wird.
Ich möchte das das Programm nur einmal auf einem PC läuft!
Es müsste beim Starten merken das schon eine Instanz läuft!
Wie kann ich sowas programmieren? Danke in voraus.
 
Mit Windows benutzt man da am besten Mutex.

Beim Erstellen eines Mutex bekommt man von Windows einen Fehlercode, wenn es bereits existiert.

m_hMutex ist vom Typ HANDLE

Code:
  m_hMutex = CreateMutex( NULL, TRUE, "MeinMutex_1" );
  if ( m_hMutex )
  {
    if ( GetLastError() == ERROR_ALREADY_EXISTS )
    {
      // das Programm läuft schon, Meldung anzeigen, Programm beenden, Windows runterfahren, usw.
      CloseHandle( m_hMutex );
      return FALSE;
    }
  }

Am Ende das Mutex natürlich freigeben:

Code:
  if ( m_hMutex )
  {
    ReleaseMutex( m_hMutex );
    CloseHandle( m_hMutex );
    m_hMutex = NULL;
  }
 
Zurück