Fenster nach minimieren wieder anzeigen



  • @drummi
    Mein Programm hat nur diese eine Fenster. Ansonsten sind dann zum Beispiel Microsoft Word, Notepad++ usw. geöffnet. Wenn ich dann

     ShowWindow(Form1->Handle, SW_SHOW);
    

    oder

    Visible = true; 
    //und (!)
    ShowWindow(Application->Handle, SW_SHOW);
    

    aufrufe wird mein Programm im Hintergrund geöffnet. So das ich das Programm in der Taskleiste anklicken muss und danach erst erscheint das Programm im Vordergrund und man kann damit arbeiten. Denn wenn Notepad++ im Vordergrund ist kann ich ja schlecht mein Programm benutzen. Hoffe jetzt ist klar welches Fenster im Vordergrund erscheinen soll.
    Frage:
    Funktioniert der Code bei euch? Erscheint nach dem Minimieren das Programm bei euch im Vordergrund? Hat eine es ausprobiert?



  • @th69 Das hat leider auch nicht geholfen.



  • Hast du denn jeweils nur genau eine der 5 Methoden ausprobiert?
    Du mußt natürlich zuerst das Fenster anzeigen lassen und danach dann in den Vordergrund bringen.

    Zur Info: In einem C# Tray-Projekt benutze ich zuverlässig folgendes:

    if (!Visible)
    {
    	Visible = true;
    	WindowState = FormWindowState.Normal;
    	Activate();
    }
    

    (sollte also im Prinzip auch so mit der VCL umsetzbar sein)



  • Eventuell ist es auch eine eigenart von Windows selbst.
    Ich hatte schon einigemale folgendes phänomen gehabt:
    Hatte im Explorer eine kopieraktion angestoßen und der Kopier-Fortschrittsdialog wurde dabei nicht im Vordergrund geöffnet



  • Wichtig ist, daß bei "BringToFront" das Fenster selbst schon den Fokus hat (also "active" ist), ansonsten erscheint der Flash-Effekt beim Taskbar-Button (d.h. das orange Blinken).
    Und genau dies erledigt dann in .NET die Activate()-Methode.



  • @th69 Ich habe alles mögliche ausprobiert. Einzel, alle hintereinander in unterschiedliche Reihenfolge. Alle Handels ausgetauscht mal Application->Handle mal this->Handle. Und deine Methode von C# ebenfalls. Leider kein Erfolg.



  • @th69 gerade ausprobiert und es hat nicht geholfen.



  • @firefly Ja die vermutung habe ich auch.



  • Welches Windows benutzt du denn?
    Ich habe noch Windows 7 und da funktioniert es ja mit meinem .NET-Programm (das ja intern auch nur die WinAPI benutzt).



  • @th69 Windows 10



  • @SNMN

    Hier ist eine Routine in Delphi, die lässt sich auch leicht in C++ umsetzen:

    https://www.swissdelphicenter.com/de/showcode.php?id=261


Log in to reply