uses
... ShellApi ...
var
....
Monitors : word;
Monit_X, Monit_Y : array [1..2] of word;
DataBar: TAppBarData;
TaskBar_H : Integer;
TaskBar_W : Integer;
TaskBar_L : Integer;
TaskBar_T : Integer;
pos_bar : Char;
...
procedure Tfm_main.FormCreate(Sender: TObject);
begin
...
// Определяемся с мониторами
Monitors := Screen.MonitorCount;
for i := 1 to Monitors do
begin
Monit_X[i] := Screen.Monitors[i - 1].Width;
Monit_Y[i] := Screen.Monitors[i - 1].Height;
end;
// определяемся с TaskBar
DataBar.hWnd := FindWindow('Shell_TrayWnd', nil);
DataBar.cbSize := SizeOf(TAppBarData);
if DataBar.hWnd <> 0 then
if SHAppBarMessage(ABM_GETTASKBARPOS, DataBar) = 1 then
begin
TaskBar_H := DataBar.rc.Bottom - DataBar.rc.Top;
TaskBar_W := DataBar.rc.Right - DataBar.rc.Left;
TaskBar_L := DataBar.rc.Left;
TaskBar_T := DataBar.rc.Top;
end;
if (TaskBar_H = Monit_Y[1])and(TaskBar_L < 10) then Pos_bar := 'L';
if (TaskBar_H = Monit_Y[1])and(TaskBar_L > 10) then Pos_bar := 'R';
if (TaskBar_W = Monit_X[1])and(TaskBar_T < 10) then Pos_bar := 'T';
if (TaskBar_W = Monit_X[1])and(TaskBar_T > 10) then Pos_bar := 'B';
...
end;