Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Form-Eintrag in Taskleiste ausblenden


Jojojoxx - Sa 04.10.08 18:13
Titel: Form-Eintrag in Taskleiste ausblenden
Hallo!

Ich habe ein Programm, dass mittels CoolTrayIcon im Tray läuft und keinen Eintrag in der Taskleiste anzeigt. Nun soll eine Form (Nicht Hauptformular, als Beispiel "Form2") angezeigt werden, und sobald diese aufgerufen wird erscheint ein Eintrag "Form2" in der Taskleiste. Wie kann ich den verhindern? Den Eintrag des Hauptformulars habe ich mittels

Quelltext
1:
ShowWindow(Application.Handle,SW_HIDE);                    

ausblenden können, allerdings klappt das bei Form2 nicht. Auch dann nicht, wenn ich "Application.Handle" durch "Form2.Handle" ersetze
Danke euch für die Hilfe!
mfg

Jojo.


Yogu - Sa 04.10.08 18:26

Hast du die Codezeile auch schon mal in verschiedenen Ereignissen bzw. Positionen ausprobiert? Möglicherweise wird der Button (erst) wieder angezeigt, nachdem du ihn manuell ausgeblendet hast.


Jojojoxx - Sa 04.10.08 18:30

Ja, ich habe die Zeile im OnShow Ereignis und VOR dem eigentlichen Form2.Show Aufruf ausprobiert.


Yogu - Sa 04.10.08 18:51

Ich habe ein minimales Beispielprojekt erstellt, und der Taskbar-Button bleibt bei mir versteckt. Vielleicht liegt es am Betriebssystem (Windows 2000), oder du hast noch zusätzlichen Code, der stört.

Ich habe mein Projekt angehängt, du könntest es mal ausprobieren.


Jojojoxx - Sa 04.10.08 20:35

Ich habe dein Projekt mal so angepasst wie bei mir das Programm aussieht.
Wenn du es nun startest und das Programm minimierst erscheint ein Tray-Symbol.
Wenn du nun aus dem minimierten Programm über das Tray-Menü (Rechtsklick auf Tray-Icon) auf Form2.show klickst, erscheinen die Taskbar-Einträge. Diese beiden Einträge möchte ich verhindern.
mfg

Jojo


Delete - Mo 06.10.08 08:30

Versuch mal

Delphi-Quelltext
1:
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) and not WS_EX_APPWINDOW);                    

im OnCreate von Form2.


Jojojoxx - Mo 06.10.08 11:49

Bringt leider nichts.
Der Eintrag von Form2 wird immer noch in der Taskleiste angezeigt :(


jaenicke - Mo 06.10.08 15:26

Auf jeden Fall hast du einen Denkfehler drin: Du lässt Form2 automatisch erstellen, und benutzt Form2 auch mit Show etc. einfach so, aber du entfernst es beim Schließen aus dem Speicher...

Delphi-Quelltext
1:
2:
3:
4:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action := caFree;
end;
Was die Taskleistenschaltfläche angeht schaue ich gleich nochmal.