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;