Mutex und zuerst gestartetes Programm ansteuern



  • Guten Tag,

    ich habe aus eurer FAQ das Mutex Beispiel in mein Programm integriert, damit das Programm nur ein Mal zur Zeit ausgeführt werden kann.

    HANDLE    hMutex;
    	hMutex = CreateMutex(NULL, TRUE, "Mein_Programm");
    
    	if(GetLastError() == ERROR_ALREADY_EXISTS)
    	{
    		OnCancel();
    	}
    

    Jetzt möchte ich, dass beim (versehentlichen) zweiten Aufruf des Programms das Erste geschlossen und das zweite geöffnet wird.

    Den Mutex überprüfe ich in der OnInitDialog() Funktion.

    Bin für jede Hilfe dankbar.

    Gruß, Manuel. 🙂



  • Die naheliegendste Variante ist:
    mit RegisterwindowMessage eine private message registrieren, und die an HWND_BROADCAST (also alle desktop-Fenster) zu schicken.

    Die zweite instanz schickt die message und beendet sich, die erste fängtr die message und aktiviert sich (oder was auch immer).

    Wenn du die Kommandozeilenparameter der zweiten instanz an die erste übermitteln willst, wird es ein bißchen komplizierter, geht aber ähnlich



  • Danke, hab es dank deiner Idee hinbekommen. 🙂


Anmelden zum Antworten