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 Aus Taskbar ausblenden (https://www.delphipraxis.net/1759-aus-taskbar-ausblenden.html)

sakura 21. Dez 2002 17:03


Aus Taskbar ausblenden
 
Hi DPler,

ich weiss, dass wir es schon hatten, aber ich habe es trotzdem nicht gefunden :oops:

Wie kann ich den Button meiner Application, bzw. eines Forms aus der Taskbar verstecken :?:

...:cat:...

Chewie 21. Dez 2002 17:10

Meinst du so:
Delphi-Quellcode:
ShowWindow(GetWindow(Handle,GW_OWNER),SW_HIDE);

trebormillenium 5. Jan 2003 16:01

Und weiter?

1. Wie kriegt mans dann wieder dahin?
2. Wie kann ich ein Icon dann in der Leiste neben der Uhr auftauchen lassen?

CalganX 5. Jan 2003 17:10

1. Statt SW_HIDE nimmst du SW_SHOW
2. Such mal in der DP. Du wirst Kompos und Beiträge finden (am besten nach TNA suchen)

Chris

trebormillenium 5. Jan 2003 17:16

Aha ok danke ich werds machen!

hm988 24. Jul 2003 19:45

Re: Aus Taskbar ausblenden
 
hallo,

das mit der Taskleiste verstecken funktionier ja Top, aber
wie funktioniert das ganze wenn ich keinen Formularkopf habe
wenn BorderStyle = none ??

dann funktioniert des bei mir nicht mehr :shock:

gruß Steven

Nalincah 25. Jul 2003 07:35

Re: Aus Taskbar ausblenden
 
Bei mir klappt es gut. Aber wie krieg ich das Programm aus dem Taskmanager raus (Win XP)??? Also das es komplett versteckt ist

Alexander 25. Jul 2003 08:34

Re: Aus Taskbar ausblenden
 
Du musst glaube ich einen Service schreiben.
Da hatten wir auch erst vro kurzem einen großen Thread.

hm988 15. Sep 2003 20:29

Re: Aus Taskbar ausblenden
 
hallo,

das selbe Problem habe ich auch ohne Formularkopf funktioniert des nicht. Weiß denn keiner eine Lösung ?

Hatte schon vor längerem angesprochen wegen Diensten und so, habe jetzt auch meinen Dienst aber wenn ich ein Formular öffne erscheint es im Taskmanager obwohl ohne Formularkopf das passiert als Exe nicht :shock: könnt ihr mir weiterhelfen ??

danke

Chewie 15. Sep 2003 20:40

Re: Aus Taskbar ausblenden
 
Unter WinNT ff. ist es nicht so ohne weiteres möglich, Prozesse zu verstecken. Das ist ja Sinn der Sache.

hm988 15. Sep 2003 21:16

Re: Aus Taskbar ausblenden
 
danke für die schnelle antwort, ja will ja nicht den Service selbst verstecken sondern nur das Formular das taucht nämlich auch als Anwendung auf aber wieso eigentlich ??
Dürfte doch nur be Prozesse sichtbar sein :shock:

mein Formular hat keinen Formularkopf, dadurch war es auch als exe nicht als Anwendung sondern nur als Prozess sichtbar das würde mir schon langen ( der Formularkopf muss aber wegbleiben )

hast du eine idee ?

CrashMan 15. Sep 2003 21:30

Re: Aus Taskbar ausblenden
 
Logisch das das noch unter Anwendungen aufgeführt wird...es ist ja noch da nur "unsichtbar" in der taskleiste...!

Versuchs mal mit Form1.Hide und Form1.Show !

CrashMan

hm988 15. Sep 2003 21:38

Re: Aus Taskbar ausblenden
 
:oops: :oops:

glaube habe mich falsch ausgedrückt, ich will natürlich nicht das Formular selbst sondern nur den Eintrag im Taskmanager für Anwendung ausblenden der ja bei einem Dienst garnicht da sein dürfte. oder wie ??

Steve

ddcool 5. Nov 2003 13:24

Re: Aus Taskbar ausblenden
 
Hi, ich habe ne viel leichtere Lösung, nämlich die Komponente:

"CoolTrayIcon" (hier der Link Delphi32.com CoolTrayIcon )

, mit der man ein Icon, oder Text als TrayIcon anzeigen lassen kann. Integriert in dieser Komponente ist auch das Ereignis "HideMainForm".

Greez Basti aka ddcool

MathiasSimmack 5. Nov 2003 13:38

Re: Aus Taskbar ausblenden
 
Zitat:

Zitat von sakura
Wie kann ich den Button meiner Application, bzw. eines Forms aus der Taskbar verstecken :?:

Mal generell die Frage: Hat schon mal jemand mit dem ITaskbarList-Interface gearbeitet? Das bietet u.a. die Funktion "DeleteTab"
Zitat:

Zitat von PSDK
Deletes an item from the taskbar.
Code:
HRESULT DeleteTab(
          HWND hwnd
);

Also, ich hab´s noch nicht probiert. Aber vielleicht wäre das einfacher Weg, ohne dass man in den Fensterstilen rumfummeln müsste :?: Das Interface benötigt laut PSDK min. den IE4. Ich denke, diese Bedingung müsste auf über 90% der Windows-Rechner erfüllt sein.

Luckie 5. Nov 2003 15:47

Re: Aus Taskbar ausblenden
 
Ein ToolWindow erscheint auch nicht in der Taskbar.

DaFox 5. Nov 2003 18:25

Re: Aus Taskbar ausblenden
 
Hi,

Zitat:

Zitat von MathiasSimmack
Mal generell die Frage: Hat schon mal jemand mit dem ITaskbarList-Interface gearbeitet?

Ja, aber ich bin damit nicht glücklich geworden...
Hier mal ein bisschen Code aus meiner eigenen CodeLibrary :wink: :

Delphi-Quellcode:
uses
  ComObj;

const
  CLSID_TaskbarList: TGUID = '{56FDF344-FD6D-11d0-958A-006097C9A090}';
type
  ITaskbarList = interface
    ['{56FDF342-FD6D-11d0-958A-006097C9A090}']
       function HrInit: HResult; stdcall;
       function AddTab(hwnd: Cardinal): HResult; stdcall;
       function DeleteTab(hwnd: Cardinal): HResult; stdcall;
       function ActivateTab(hwnd: Cardinal): HResult; stdcall;
       function SetActiveAlt(hwnd: Cardinal): HResult; stdcall;
  end;

implementation

procedure TForm1.Button1Click(Sender: TObject);
const
  CLSID_TaskBarList: TGUID ='{56FDF344-FD6D-11D0-958A-006097C9A090}';
  IID_ITaskBarList: TGUID ='{56FDF342-FD6D-11D0-958A-006097C9A090}';
var
  FTaskbarList: ITaskBarList;
  Wnd: hWnd;
begin
  Wnd := FindWindow('IEFrame',nil);
  if (Wnd <> 0) then
  begin
     FTaskbarList := CreateComObject(CLSID_TaskbarList) as ITaskbarList;
     FTaskbarList.HrInit;
     FTaskbarList.HrInit;
     FTaskbarList.DeleteTab(Wnd);
  end;
end;
Gruß,
Markus

Logic 28. Nov 2003 19:00

____hat sich erledigt____

MathiasSimmack 28. Nov 2003 21:26

Re: Aus Taskbar ausblenden
 
Zitat:

Zitat von DaFox
Zitat:

Zitat von MathiasSimmack
Mal generell die Frage: Hat schon mal jemand mit dem ITaskbarList-Interface gearbeitet?

Ja, aber ich bin damit nicht glücklich geworden...

Wieso nicht?
Der Eintrag vom IE verschwindet anstandslos. Getestet unter Win98.

Problematisch wird´s nur bei der VCL. Das folgende Beispiel geht davon aus, dass man eine Form namens "TForm1" hat, und es funktioniert nicht:
Delphi-Quellcode:
Wnd := FindWindow('TForm1',nil);
Damit verschwindet das eigene Fenster nicht.

Und wieso nicht? :mrgreen:
Weil bei VCL-Programmen nicht die Form sondern das TApplication-Objekt für den Eintrag in der Taskbar verantwortlich ist. Korrekt wäre also:
Delphi-Quellcode:
Wnd := findwindow('TApplication',nil);

if (Wnd <> 0) then
begin
  FTaskbarList := CreateComObject(CLSID_TaskbarList) as ITaskbarList;
  FTaskbarList.HrInit;
  FTaskbarList.DeleteTab(Wnd);
end;
und -schwupps!- ist der Taskbar-Eintrag verschwunden ... ohne dass man in den Fensterstilen rumfummeln muss. Wenn allerdings noch ein zweites VCL-Programm läuft, wird´s schon wieder schwierig. In dem Fall muss man also gezielt nach dem Buttontitel suchen, etwa
Delphi-Quellcode:
Wnd := findwindow('TApplication','Project1');
unter der Voraussetzung, das eben "Project1" auf dem Taskbar-Button steht.

Mit
Delphi-Quellcode:
  FTaskbarList.ActivateTab(Wnd);
anstelle von "DeleteTab" kann man den Button übrigens wieder sichtbar machen. Aber mehr verrät dazu, wie immer!, das PSDK.

@DaFox: Dein Code kann ein bisschen aufgeräumt werden. Die lokale GUID im Button-Klick kann weggelassen werden, weil sie ja bereits global deklariert ist, und einmal
Delphi-Quellcode:
FTaskbarList.HrInit;
hat bei mir gereicht. :)

DaFox 29. Nov 2003 01:01

Re: Aus Taskbar ausblenden
 
Hi Mathias,

Zitat:

Zitat von MathiasSimmack
Wieso nicht?
Der Eintrag vom IE verschwindet anstandslos. Getestet unter Win98.

weil ich damals ein anderes Ziel verfolgte. Natürlich verschwindet der Eintrag vom IE anstandslos (auch unter anderen Versionen als Windows 98 ), aber nun minimiere mal das IE-Fenster - schwupps! ;-) - der Taskbarbutton ist wieder da. Das heißt, dass Du also auf verschiedene Messages des (fremden) Fensters reagieren müsstest um den Button immer wieder aus der Taskbar zu entfernen. Oder eben (noch schlimmer) du suchst nach dem ungeliebten Button in der Taskbar per Polling. Natürlich, wenn es um den eigenen Taskbarbutton geht dann ist das alles kein Problem; bei mir ging es aber um einen eines fremden Fensters.

Zitat:

Zitat von MathiasSimmack
@DaFox: Dein Code kann ein bisschen aufgeräumt werden. Die lokale GUID im Button-Klick kann weggelassen werden, weil sie ja bereits global deklariert ist, und einmal
Delphi-Quellcode:
FTaskbarList.HrInit;
hat bei mir gereicht. :)

Ja, zweimal initialisieren brauchst nicht, das ist nur blödsinnigerweise reingerutscht, sorry. Zur lokalen GUID: Da sieht man, dass ich nur einen Abend damit experimentiert habe, danach rutschte das Ding in meine CodeLib und verstaubt seit dem. Ich habe mir damals selbst was gebastelt (bzw. bastle immernoch daran :wink: ) um einen x-beliebigen Taskbarbutton zu entfernen - und zwar dauerhaft.

Gruß,
Markus

MathiasSimmack 29. Nov 2003 07:18

Re: Aus Taskbar ausblenden
 
Aha, ... gut, das Minimieren habe ich jetzt nicht probiert. Ich habe nur zwei Buttonklicks zum Anzeigen und Verstecken gebaut und mich dann gefragt: "Was hat er denn? Geht doch." :)

Wahrscheinlich hast du recht. Bei fremden Fenstern bzw. fremden Taskbar-Buttons wird es wohl wirklich aufwändig werden, wenn der Button nach diversen Aktionen wieder erscheint. Aber da sich die meisten Fragen in dem Thema um das eigene Programm drehen, ist dein Code meiner Meinung nach trotzdem die bessere Variante - besser als der Vorschlag, den Fensterstil zu ändern, nur weil ein Toolwindow auch keinen Taskbarbutton hat.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz