Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Fenster mit bsNone aus der Taskleiste ausblenden (https://www.delphipraxis.net/141610-fenster-mit-bsnone-aus-der-taskleiste-ausblenden.html)

mh166 12. Okt 2009 16:31


Fenster mit bsNone aus der Taskleiste ausblenden
 
Hallo an alle,

ich bin grad dabei ne kleine Deskband-Anwendung für Arbeit zu schreiben. Also eine Toolbar für die Startleiste, den Explorer und den IE, wem "Deskband" nix sagen sollte.

Aus dieser Toolbar heraus lasse ich ein Fenster mit verschiedenen Infos anzeigen. Dabei möchte ich allerdings verhindern, dass das Fenster in der Taskbar angezeigt wird. Das an sich wäre ja kein Problem, schließlich lässt sich dazu genug Hilfe über die Suche finden. Das Problem ist aber, dass das Fenster mit BorderStyle := bsNone ausgezeichnet ist. Dadurch scheinen die üblichen Tipps nicht so wirklich zu helfen. Weder mit SetWindowLong den GWL_EXSTYLE zu verändern noch mit ShowWindow und SW_HIDE bin ich vorangekommen.

Hier mal etwas Code, wie ich das Formular erzeuge:
Code:
QR := TfrmQueryResult.Create(self);
QR.OnClose := onCloseQR;
QR.ParentWindow := 0;
QR.Show;
Im OnCreate des TfrmQueryResult hab ich dann (unter anderem) folgendes probiert:
Code:
SetWindowLong(Self.Handle, GWL_EXSTYLE, GetWindowLong(self.Handle, GWL_EXSTYLE) and not WS_EX_APPWINDOW);
Aber wie bereits gesagt: das funktioniert so nich wirklich ... Wäre klasse wenn ihr mir hier weiterhelfen könntet. :)

mfg, mh166

DeddyH 12. Okt 2009 20:01

Re: Fenster mit bsNone aus der Taskleiste ausblenden
 
Und wenn Du es mal statt mit Self.Handle mit Application.Handle versuchst?

mh166 12. Okt 2009 20:38

Re: Fenster mit bsNone aus der Taskleiste ausblenden
 
Nein, auch das funktioniert leider nicht. Leider echt keine Ahnung was man sonst noch probieren könnte ... :-/

mfg, mh166

mh166 13. Okt 2009 18:02

Re: Fenster mit bsNone aus der Taskleiste ausblenden
 
Hmmm... ich hab grad nochmal was im Windows SDK gefunden:

Zitat:

Managing Taskbar Buttons

The Shell creates a button on the taskbar whenever an application creates a window that isn't owned. To ensure that the window button is placed on the taskbar, create an unowned window with the WS_EX_APPWINDOW extended style. To prevent the window button from being placed on the taskbar, create the unowned window with the WS_EX_TOOLWINDOW extended style. As an alternative, you can create a hidden window and make this hidden window the owner of your visible window.
Gelesen, ausprobiert ... und FAIL. :( Hab ne Form erstellt, die mit ShowWindow(frm.Handle, SW_HIDE) versteckt und anschließend dann halt TfrmQueryResult.CreateParented(tmpForm.Handle) das Info-Fenster erzeugt. Es gab zwar kein Button in der Taskbar ... aber das Infofenster ist nicht sichtbar. :wall:

Ich komm hier nich mehr voran ... jemand n Plan?

mfg, mh166

//Edit:

Ich versteh die Welt nich mehr ... grad nochmal aus Verzweiflung rumprobiert ... nu gehts ...

Code:
procedure TfrmQueryResult.FormCreate(Sender: TObject);
begin
  SetWindowLong(Self.Handle, GWL_EXSTYLE, GetWindowLong(Self.Handle, GWL_EXSTYLE)
                or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
end;
Keeeeineee Ahnung, warum das ganze jetzt auf einmal geht und anfangs nich ... Aber soll mir recht sein. Vielleicht hilfts ja jemandem weiter. :)

lbccaleb 13. Okt 2009 18:40

Re: Fenster mit bsNone aus der Taskleiste ausblenden
 
Die Suche hätt dir aber auch diesen Thread gezeigt ;)

Sysbar

mh166 13. Okt 2009 19:17

Re: Fenster mit bsNone aus der Taskleiste ausblenden
 
Ich bin auf derartige Lösungen bei meiner Suche schon zur genüge gestoßen. Hatte ich auch alles schon ausprobiert, unter anderem halt auch mit WS_EX_TOOLWIN. Aber ich weiß echt nicht was ich damals anders gemacht hab als jetzt...

Naja, jetzt gehts ja wie gesagt. Danke trotzdem. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 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