Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Verfügbarer Platz in der Taskleiste

  Alt 29. Okt 2005, 00:30
du könntest anhand der Classnames das Handle ermitteln von dem Fenster wo die Programmbtns drauf liegen.
Die Hierarchy ist wie folgt (Klassennamen)
Code:
Shell_TrayWnd
  ReBarWindow32
    MSTaskSwWClass
      ToolbarWindow32
Wenn man also das ToolbarWindow32 mit ShowWindow ausblendet würde man die Buttons für die Programme nicht sehen. Anstelle von Ausblenden kannst du natürlich auch die Breite dann ermitteln.

Mit folgendem Source könnte man also die größe abfragen
Delphi-Quellcode:
  function LGetHandle(AHandleSrc: Cardinal; var AHandleDst: Cardinal): Cardinal;
  begin
    AHandleDst := AHandleSrc;
    result := AHandleDst;
  end;
var LHandle: Cardinal;
    LPlacement: TWindowPlacement;
begin
  if LGetHandle(FindWindow('Shell_TrayWnd', nil), LHandle) <> 0 then
    if LGetHandle(FindWindowEx(LHandle, 0, 'ReBarWindow32', nil), LHandle) <> 0 then
      if LGetHandle(FindWindowEx(LHandle, 0, 'MSTaskSwWClass', nil), LHandle) <> 0 then
        if LGetHandle(FindWindowEx(LHandle, 0, 'ToolbarWindow32', nil), LHandle) <> 0 then
        begin
          if GetWindowPlacement(LHandle, @LPlacement) then
            ShowMessage(inttostr(LPlacement.rcNormalPosition.Right - LPlacement.rcNormalPosition.Left));
        end;
Das Problem ist das man dabei die breite bekommt welche für die Fenster vorgesehen ist. Man weiß aber damit nicht wieviel FensterBtns drauf plaziert sind und wieviel Platz diese In Anspruch nehmen. Man kann also höchstens schauen wieviel Platz neben der Fensterleiste ist.

Wozu brauchst du das ganze? Vielleicht gibt es ja für das Ziel welches du erreichen willst eine bessere Lösung wo dieser Wert keine Rolle spielt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat