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.