Thema: Delphi Aus Taskbar ausblenden

Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#19

Re: Aus Taskbar ausblenden

  Alt 28. Nov 2003, 21:26
Zitat von DaFox:
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:
Wnd := FindWindow('TForm1',nil); Damit verschwindet das eigene Fenster nicht.

Und wieso nicht?
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
Wnd := findwindow('TApplication','Project1'); unter der Voraussetzung, das eben "Project1" auf dem Taskbar-Button steht.

Mit
  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
FTaskbarList.HrInit; hat bei mir gereicht.
  Mit Zitat antworten Zitat