Einzelnen Beitrag anzeigen

DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#3

AW: Position und Größe der Taskleiste

  Alt 30. Apr 2020, 22:28
Das ist aktiv. Ich glaube ich habe jetzt zwei Funktionen die eigentlich ganz gut mit Multimonitor und HIghDPI funktionieren sollten. Schade nur, dass ich Handle in GetTaskBarPos nicht verwenden kann. Aber die Taskbar sollte eigentlich auf allen Monitoren da sein, wo sie auf Monitor 0 auch ist.

Delphi-Quellcode:
function GetTaskBarPos(Handle: THandle): TTaskBarPos;
var
 tabd: TAppBarData;
begin
 Result := _BOTTOM;

 FillChar(tabd, SizeOf(TAppBarData), 0);
 tabd.cbSize := SizeOf(TAppBarData);
 if SHAppBarMessage(ABM_GETTASKBARPOS, tabd) = 0 then
  Exit;

 case tabd.uEdge of
  ABE_LEFT:
   Result := _LEFT;
  ABE_TOP:
   Result := _TOP;
  ABE_RIGHT:
   Result := _RIGHT;
  ABE_BOTTOM:
   Result := _BOTTOM;
 end;
end;

function GetTaskBarDimension(Handle: THandle): Integer;
var
 aScreen: TMonitor;
begin
 Result := -1;

 aScreen := Screen.MonitorFromWindow(Handle);

 case GetTaskBarPos(Handle) of
  _RIGHT, _LEFT:
   Result := aScreen.Width - aScreen.WorkAreaRect.Width;

  _TOP:
   Result := aScreen.WorkAreaRect.Top;

  _BOTTOM:
   Result := aScreen.Height - aScreen.WorkAreaRect.Bottom;
 end;
end;
  Mit Zitat antworten Zitat