Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

AW: Application.MainFormOnTaskbar wird ignoriert (10.4)

  Alt 9. Aug 2020, 20:12
Das mit dem ShowWindow hatte ich vorhin auch schon probiert.
Delphi-Quellcode:
Application.MainFormOnTaskbar := True;
SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
ShowWindow(Application.Handle, SW_SHOWMINNOACTIVE);
Aber mit dem Nebeneffekt, dass ich dann das Fenster, also die Titelleiste, unten links auf dem Desktop sehen konnte, aber nicht in der Taskleiste.

Eigentlich wollte ich eine Lösung, die global ist und nicht in den Forms liegt, aber geht wohl nicht,
denn ich sah gerade eben, dass im Application.CreateForm die VCL nochmal an den Eigenschaften dem Applicaton-Form rumpfuscht.


Zum Testen einfach ein Sleep(10000) ins OnCreate der Form (MainForm).
Bis zum Anzeigen würde ich gern die Application-HWND (oder irgendwas) in der Taskleiste sehen wollen und danach (ab OnShow) dann die MainForm.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Sleep(10000); // oder irgendwas Langwirigere
end;

{ --------------------- }

Application.Initialize;
Application.MainFormOnTaskbar := False;
//SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
//ShowWindow(Application.Handle, SW_SHOWMINNOACTIVE);
//Application.ProcessMessages;

Application.CreateForm(TForm1, Form1);

Application.MainFormOnTaskbar := True;
Application.Run;
Mit ShowWindow oder gar mehr seh ich maximal das Fenster/Titelleiste, aber niemals den Button in der Statusleiste.

Einmal hatte ich es geschafft die Application-Form in die Taskleiste zu bekommen, aber weiß grad nicht mehr wie. (am Ende blieb die drin, auch wenn sie nach Durchlauf ja mit der MainForm wechseln sollte)


Aber egal ob True oder False, erst wenn/nachdem OnCreate fertig ist, wird etwas in der Taskleiste angezeigt und das ist immer nur die MainForm,
wie die Button-Caption und AeroPeak bestätigen -> Vorschau einer leeren Form oder der MainForm, wo ein Memo drauf ist.
Delphi-Quellcode:
Application.Initialize;
Application.MainFormOnTaskbar := False;
Application.CreateForm(TForm1, Form1);
Application.Run;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 9. Aug 2020 um 20:14 Uhr)
  Mit Zitat antworten Zitat