Anwendung schon geöffnet?



  • Hallo.

    Wie kann ich wenn meine Anwendung gestartet wurde, schauen, ob sie mehrmals geöffnet ist oder nur einmal?

    Danke!



  • CreateMutex wäre eine lösung

    int WINAPI WinMain(
        HINSTANCE hThisInstance,
        HINSTANCE hPrevInstance,
        LPSTR lpszArgument,
        int nCmdShow)
    {
        // überprüfen ob programm schon gestartet ist
    	CreateMutex(NULL, TRUE, "Anwendung gestarted");
    	if(GetLastError() == ERROR_ALREADY_EXISTS)
    	{
    		HWND        hWndFirst;
    		hWndFirst = FindWindow(SZWNDCLASS, NULL);
    
    		BringWindowToTop(hWndFirst);
    		SetForegroundWindow(hWndFirst);
    
    		return -1;
    	}
    
    // .....
    


  • Jo, das funzt, hast noch etwas vergessen, aber hier der ganze Code:

    int WINAPI WinMain(
        HINSTANCE hThisInstance,
        HINSTANCE hPrevInstance,
        LPSTR lpszArgument,
        int nCmdShow)
    {
        // überprüfen ob programm schon gestartet ist
    	CreateMutex(NULL, TRUE, "Anwendung gestartet");
    	if(GetLastError() == ERROR_ALREADY_EXISTS)
    	{
    		HWND        hWndFirst;
    		hWndFirst = FindWindow("TForm", NULL);
    
    		BringWindowToTop(hWndFirst);
    		SetForegroundWindow(hWndFirst);
    
    		return -1;
    	}
        ReleaseMutex(hWndFirst);
    


  • Windoof schrieb:

    Jo, das funzt, hast noch etwas vergessen, aber hier der ganze

    auch nicht ganz richtig 😃

    int WINAPI WinMain(
        HINSTANCE hThisInstance,
        HINSTANCE hPrevInstance,
        LPSTR lpszArgument,
        int nCmdShow)
    {
        // überprüfen ob programm schon gestartet ist
    	HANDLE hMutex = CreateMutex(NULL, TRUE, "Anwendung gestartet");
    	if(GetLastError() == ERROR_ALREADY_EXISTS)
    	{
    		HWND        hWndFirst;
    		hWndFirst = FindWindow("TForm", NULL);
    
    		BringWindowToTop(hWndFirst);
    		SetForegroundWindow(hWndFirst);
    
    		return -1;
    	}
    // ......
    
        ReleaseMutex(hMutex);
    


  • Jo, stimmt... Hast ma wieder recht 😉 Danke nochmal.


Anmelden zum Antworten