AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Application.MainFormOnTaskbar wird ignoriert (10.4)
Thema durchsuchen
Ansicht
Themen-Optionen

Application.MainFormOnTaskbar wird ignoriert (10.4)

Ein Thema von himitsu · begonnen am 9. Aug 2020 · letzter Beitrag vom 27. Sep 2021
Antwort Antwort
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#1

AW: Application.MainFormOnTaskbar wird ignoriert (10.4)

  Alt 10. Aug 2020, 13:19
Zitat:
WS_EX_TOOLWINDOW
Ahhhhhhhhh, der blöde Copy&Paste-AutoVervollständigung-BlindHinguck-Fehler
Ich schieb jetzt einfach Mal die Schukd auf Corona und Hitze.


Aber wenn selbst
Delphi-Quellcode:
Application.Initialize;
Application.MainFormOnTaskbar := False;
Application.CreateForm(TForm1, Form1);
Application.Run;
nicht funktioniert, dann kann der Fehler doch "hier" nicht bei mir liegen?

Siehe auch ghubi01, wo man im ScreenShot das schön sieht, dass da eben immer die MainForm angezeigt wird.
Aber OK, als Überschrift des AeroPeek ist zumindestens die Caption unterschiedlich, aber dennoch immer als Bild die Form.

Und wenn man den Start verzögert, dann ist bis zur Anzeige der MainForm weiterhin kein Button in der Taskleiste.
Aber genau das wollte ich ja eigentlich erreichen, dass so lange die Anwendung läuft, immer was in der Taskleiste ist, egal ob eine Form sichtbar ist, oder nicht.
(Zumindestens beim Starten und Beenden, bis die Anwendung fertig geladen wurde, bzw. bis sie komplett weg ist)


Langsam überkommt mich das Gefühl, es könnte eine "Verbesserung" im DesktopWindowManager vom Windows 10 sein.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (10. Aug 2020 um 13:29 Uhr)
  Mit Zitat antworten Zitat
Sailor

Registriert seit: 20. Jul 2008
Ort: Balaton
112 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Application.MainFormOnTaskbar wird ignoriert (10.4)

  Alt 10. Aug 2020, 15:34
Keine Ahnung, ob das Dein Problem löst, ich mache das seit Olims Zeiten so wie hier beschrieben. Die Hauptanwendung startet eine untergeordnete Anwendung und blendet das Icon aus. Umgekehrt beim Verlassen der Nebenanwendung. Funktioniert auch unter W10, es gibt nur eine kurze Zeitspanne, in der 2 Icons zu sehen sind. Das kann aber auch an dem schwachbrüstigen Rechner liegen, der bei der Hitze keine richtige Lust hat.

Delphi-Quellcode:
  PROCEDURE HideTaskBarButton(CONST app:String; hide:Boolean);
   VAR
    h_wnd: HWnd;
    style: Integer;

   BEGIN
    h_wnd := FindWindow(NIL,PChar(app));
    IF h_wnd <> 0
     THEN BEGIN
           style := GetWindowLong(h_wnd,gwl_ExStyle)
                   OR
                    ws_Ex_ToolWindow;
           IF hide = True
            THEN BEGIN
                  style := style AND NOT(ws_Ex_AppWindow);
                  ShowWindow(h_wnd,sw_Hide)
                 END
            ELSE BEGIN
                  style := style AND ws_Ex_AppWindow;
                  ShowWindow(h_wnd,sw_Show)
                 END;
           SetWindowLong(h_wnd,gwl_ExStyle,style)
          END
   END; //OF PROCEDURE HideTaskBarButton
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#3

AW: Application.MainFormOnTaskbar wird ignoriert (10.4)

  Alt 10. Aug 2020, 17:02
Es liegt nicht am Windows 10.
Delphi 10.3 auf Windows 7, das Gleiche.
Titel ist hier der Application-Title, aber AeroPeek bleibt weiterhin die MainForm (wäre aber egal und eigentlich OK),
aber vor Ablauf der Pause ist weiterhin nichts zu sehn. (die ProcessMessages machen keinen Unterschied)
Delphi-Quellcode:
Application.Initialize;
Application.MainFormOnTaskbar := False;
//Application.ProcessMessages;
Sleep(10000); // eigentlich Berechnung im TForm1.OnCreate, aber für den kurzen Test hier
//Application.ProcessMessages;
Application.CreateForm(TForm1, Form1); // z.B. mit einem TMemo drauf, um den Unterschied zu sehen .... Vorschau/AeroPeek ohne Memo = Application und Mit = MainForm
Application.Run;
@Sailor: Über den Namen suchen ist etwas ungünstig, wenn das Programm mehrmals gestartet wurde,
aber in Application.Handle ist ja eh das gesuchte Fenster drin.
Delphi-Quellcode:
Application.Initialize;
Application.MainFormOnTaskbar := True; // oder False

ShowWindow(Application.Handle, SW_SHOW);
SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
Application.ProcessMessages;

Sleep(10000);

Application.CreateForm(TForm1, Form1);

ShowWindow(Application.Handle, SW_HIDE);
SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) and not WS_EX_APPWINDOW);

//Application.MainFormOnTaskbar := True;
Application.Run;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (10. Aug 2020 um 17:13 Uhr)
  Mit Zitat antworten Zitat
Thomas Feichtner

Registriert seit: 30. Nov 2007
Ort: Rum
137 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Application.MainFormOnTaskbar wird ignoriert (10.4)

  Alt 23. Sep 2021, 19:56
Hallo Himitsu,

hast du nun eine Lösung für dein Problem? Ich stehe auch vor dem selben Problem.
mfg

Thomas Feichtner
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.960 Beiträge
 
Delphi 12 Athens
 
#5

AW: Application.MainFormOnTaskbar wird ignoriert (10.4)

  Alt 24. Sep 2021, 08:19
Ich mache das gerne so wie im Anhang (außer dass hier durch das Sleep das Fenster nicht reagiert natürlich, das ist nur hier für das Beispiel). MainFormOnTaskbar musste ich dafür noch nie auf False ändern.

SplashExample.png
Angehängte Dateien
Dateityp: 7z SplashTest.7z (4,9 KB, 9x aufgerufen)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#6

AW: Application.MainFormOnTaskbar wird ignoriert (10.4)

  Alt 24. Sep 2021, 08:36
Damit würde ich aber die Fokussteuerung durcheinander bringen.

Es sollte eine "Komponente" werden, welche sich auch in der Delphi-IDE nutzen ließe (da die Entwickler einfach zu doof sind das nach Jahrzehnten selber zu fixen),
die einfach nur von "Application" den Taskbareintrag anzeigt, wenn durch irgendwas sonst kein Eintrag in der Taskleiste zu sehen ist,
also so wie eben "eigentlich" beim Application.MainFormOnTaskbar=False der Fall wäre.
z.B. während IDE-SplashScreen, Fehlerdialog und auch wenn das Programm beim Runterfahren hängen bleibt, nachdem die Mainform schon weg ist.

Aber am Programmablauf selber wollte ich garnichts ändern (z.B. neues Fenster erstellen)


Hatte zwar auch schon länger Delphi11 installiert, aber noch garnicht dau gekommen irgendwas zu machen.
War auch bissl blöd, seit ner Weile im Krankenhaus zu sitzen, mit ständigen Schmerzen vor aber auch noch nach der OP.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (24. Sep 2021 um 08:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.960 Beiträge
 
Delphi 12 Athens
 
#7

AW: Application.MainFormOnTaskbar wird ignoriert (10.4)

  Alt 24. Sep 2021, 08:50
Der große Vorteil ist, dass das initialization wirklich am Anfang ausgeführt wird. Dadurch ist der Splashscreen quasi sofort da, selbst wenn danach noch viel vor dem begin des Projektquelltextes passieren sollte.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz