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;