CreateMutex



  • Hallo Forum

    Um ein Doppelstart meiner Anwendung zu vermeiden verwende ich folgendes:

    HANDLE hMutex;
    	hMutex = ::CreateMutex(NULL, FALSE, "MeinProgName");
    	if( GetLastError() == ERROR_ALREADY_EXISTS )
    	{
    		MessageBox(NULL,"Dieses Programm ist schon geöffnet!", "Fehler: Programm existiert schon", MB_OK | MB_ICONWARNING);
    		CloseHandle(hMutex);
    		PostQuitMessage(0);
    		return FALSE;
    	}
    

    Dieser Code steht im C*App::InitInstance() und es ist ein SDI-Prog.

    Das funzt ja auch.
    Ich möchte nun das erstaufgerufene Prog aktivieren, weis leider nicht wie?

    Danke im voraus.

    mfg Jo..



  • Hat keiner ne Ahnung?



  • Folgende Idee: (in Fett stehen Sachen / Funkrionsnamben wo ich nicht weiß ob sie funkrionieren

    1(a). Im Mutex das Handle zur Instanz (Type hInstance) abspeichern

    **1(b). Mit einer Funktion die Instanz vom Mutex ableiten z.B.

    HINSTANCE GetInstanceFromMutex( ... )
    

    **

    **2. Eine funktion aufrufen, ide das Fenster ermittelt:

    Wahrscheinlich:
    GetMainWindo( ... ) // Oder so ähnlich
    ```**   
    
    3\. Eine *SendMessage* \- Funktion aufrufen um das Hauftfenster eine Nachricht zu hinterlassen  
    
    4\. IM Hauptfenster die Nachricht abfangen und auswerten  
    
    P.S. WEnn es möglich ist, könnt ihr meinen Textz ändern und den "Ideen" (Funtions-) "Namen" geben


  • An MFC class to implement single instance apps
    http://www.naughter.com/sinstance.html


Log in to reply