» » Расположение и размер TaskBar. Количество и разрешение мониторов

 

Расположение и размер TaskBar. Количество и разрешение мониторов

Автор: reader hlp от 15-12-2018, 13:37, посмотрело: 54

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;
скачать dle 12.0

Категория: Pascal Delphi