Anwendung lediglich einmal öffnen - Fenster fokussieren



  • Hallo @all,

    meine Anwendung soll nur einmal aufrufbar sein, d.h. starte ich eine zweite Instanz meiner Anwendung, soll diese das Fenster der anderen Anwendung anzeigen.

    Das überprüfen, ob bereits eine Instanz existiert, ist mir bereits gelungen (Mutex Lösung), jedoch bin ich mit dem Anzeigen des Fensters unzufrieden:

    Ich habe dass bisher so gelöst:

    //...
    SetForegroundWindow( FindWindow( /*Klassenname*/,/*Fenstertitel*/ ) );
    //...
    

    Solange nun das Fenster geöffnet ist, funktioniert das auch ziemlich gut, ABER habe ich z.B. das Fenster minimiert, funktioniert das nicht mehr. Gibt es dafür einen Weg, vielleicht mit einer anderen Funktion, statt SetForegroundWindow, oder evtl. einer ganz anderer Ansatz zum "Fokussieren" einer bereits bestehenden Anwendung?

    Danke unf MfG

    Hlymur



  • 1.beim Start deiner Anwendung einen Mutex erzeugen
    2.den Rückgabewert des Mutex prüfen:
    3a. wenn der Mutex schon vorhanden ist, das andere Fenster finden, in den Vordergrund bringen und dein soeben gestartetes Programm beenden
    3b. wenn der Mutex noch nicht vorhanden ist, ganz normal durchstarten




  • Mod

    Ist das Fenster minimiert erstmal einen Restore machen. Dann SetForegroundWindow nutzen.


Log in to reply