Ok, ich bin einen kleinen Schritt weitergekommen. Allerdings erscheint mir die Lösung nicht besonders sauber. Vor allem, weil sie nicht 100%ig funktioniert.
Ich kann jetzt (fast) verhindern, dass mein Deskband angezeigt wird, wenn meine andere Anwendung nicht läuft. Dazu setze ich einfach die Größe des Bandes auf 0:
Delphi-Quellcode:
// in TDemoDeskBand.GetBandInfo
MyProgHandle:= FindWindow('MeinProgrammKlassenName',nil);
if MyProgHandle = 0 then
begin
pdbi.ptMinSize.x := 0;
pdbi.ptMinSize.y := 0;
pdbi.ptMaxSize.x := 0;
pdbi.ptMaxSize.y := 0;
pdbi.ptActual.x := 0;
pdbi.ptActual.y := 0;
end;
Es ist allerdings so, dass trotzdem etwas unsichtbares von der Breite eines Pixels gezeichnet wird, da sich das "DE" der Eingabegebietsschemaleiste um einen (oder zwei oder drei) Pixel verschiebt.Damit könnte ich zur Not leben.
Bleibt aber immer noch das andere Problem: Wie kann ich dafür sorgen, dass ggf. das Band aktualisiert wird, d.h. wie kann ich durch mein Programm die Taskleiste dazu bringen, mein Band neu zu zeichnen, wodurch (hoffentlich) die BandInfo-Prozedur aufgerufen wird, und dann (weil mein Fenster dann da ist) die Größe richtig gesetzt wird?