Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Fenster dynamisch aus Taskbar raus (https://www.delphipraxis.net/185136-fenster-dynamisch-aus-taskbar-raus.html)

hoika 18. Mai 2015 18:00

Fenster dynamisch aus Taskbar raus
 
Hallo,

ich möchte, dass ein Fenster per Button-Klick aus der Taskbar verschwindet.

c++-Code mit ModofyEx
http://www.codeguru.com/cpp/framewor...ion-button.htm

Delphi-Quellcode:
begin
    ShowWindow(Handle, SW_HIDE);

    SetWindowLong(Application.Handle, GWL_EXSTYLE,
       GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);

    ShowWindow(Handle,SW_SHOW);
end;
Klappt nur leider nicht.

Weiss jemand, wie das geht?

Danke

Heiko

Popov 18. Mai 2015 18:11

AW: Fenster dynamisch aus Taskbar raus
 
Delphi-Quellcode:
procedure HideInTaskbar(AHandle: HWnd; Hide: Boolean);
const
  SW: array [Boolean] of Longword   = (SW_NORMAL, SW_HIDE);
var
  Owner: HWnd;
begin
  {Um den Taskbar-Eintrag des Moduls zu verstecken, muß das
  Applikationsfenster (nicht die MainForm!) unsichtbar gemacht werden.}
  Owner := GetWindow(AHandle, GW_OWNER);
  ShowWindow(Owner, SW[Hide]);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  HideInTaskbar(Handle, True);
end;

himitsu 18. Mai 2015 18:18

AW: Fenster dynamisch aus Taskbar raus
 
Welches Delphi?

Zwecks Aero-Support seit Vista ist in "aktuelleren" Delphiversionen standardmäßig nicht mehr Application (ein unsichtbares MessageOnlyWindow) in der Taskbar, sondern die Mainform, sonst zeigt die Preview nur "Mist" an. :stupid:

Popov 18. Mai 2015 18:22

AW: Fenster dynamisch aus Taskbar raus
 
Delphi 7 in Windows 7, Funktion funktioniert.

himitsu 18. Mai 2015 18:43

AW: Fenster dynamisch aus Taskbar raus
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Popov (Beitrag 1301998)
Delphi 7 in Windows 7, Funktion funktioniert.

Zitat:

"aktuelleren" Delphiversionen
:roll:

http://docwiki.embarcadero.com/Libra...nFormOnTaskBar
Und das gibt es bestimmt schon mindestens seit 6-7 Jahren.

Und demnach funktioniert Delphi 7 in Win7 doch nicht "richtig", oder was zeigt die Aero-Preview (Aero Peek) oder der Taskswitcher (Win+Tab) bei dir an? Vermutlich nicht den Inhalt der Mainform. :zwinker:
Aber ja, der Code würde genau so, also ohne Änderungen am Code, sogar in neueren Delphis funktionieren, aber das will man doch garnicht. :angle2:

hoika 19. Mai 2015 04:45

AW: Fenster dynamisch aus Taskbar raus
 
Hallo,
im Moment noch D2007, soll aber bald XE4 werden.
Vom Ändern von MainFormOnTaskbar wird im Artikel ja abgeraten.

Danke

Heiko

hoika 19. Mai 2015 06:19

AW: Fenster dynamisch aus Taskbar raus
 
Hallo,

beides hat nicht geklappt.
Aber das hier klappt.

// verstecken
Application.MainFormOnTaskBar := False;
ShowWindow(Application.Handle, SW_HIDE);

// wieder anzeigen
Application.MainFormOnTaskBar := True;
ShowWindow(Application.Handle, SW_SHOW);

Das Verstecken erzeugt einen kleinen Flacker-Effekt,
aber das ist mir egal.

Trotzdem Danke an Euch.


Heiko

himitsu 19. Mai 2015 07:45

AW: Fenster dynamisch aus Taskbar raus
 
Wenn man das richtige Handle benutzt, dann geht's auch so ...

Delphi-Quellcode:
if Application.MainFormOnTaskBar then
  Application.MainForm.Handle
else
  Application.Handle
Der Code muß auf die Form angewendet werden, welche sich in der Taskbar befindet ... egal welche das ist :stupid:


Aber bei vorallem bei der MainForm, ist "Hide" nicht immer die beste Idee, sondern eher das Ändern des Fenster-Stils, jedenfalls wenn die Form gleichzeitig oben sichtbar sein soll.


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