Определить размера рабочей области Desktop'а

Previous  Top  Next

    
 

 

Иногда важно знать, какую часть экрана можно занимать, не перекрывая тем самым такие окна, как TaskBar. Эта программа разворачивает окно на всю рабочую область Desktop'а.

Code:

procedure TForm1.Button1Click(Sender: TObject);

var

r : TRect;

begin

SystemParametersInfo(SPI_GETWORKAREA, 0, Addr(r), 0);

Form1.Left := r.Left;

Form1.Top := r.Top;

Form1.Width := r.Right - r.Left;

Form1.Height := r.Bottom - r.Top;

end;

 

©Drkb::01829

Автор советов: Даниил Карапетян

e-mail: delphi4all@narod.ru

 

Автор справки: Алексей Денисов

e-mail: aleksey@sch103.krasnoyarsk.su

 

 

 


 

Воспользуйтесь функцией SystemParametersInfo(), переслав ей в качестве параметров - SPI_GETWORKAREA и адрес структуры типа TRect, куда будут передан полученный результат:

 

 

Code:

procedure TForm1.Button1Click(Sender: TObject);

var

r: TRect;

begin

SystemParametersInfo(SPI_GETWORKAREA, 0, @r, 0);

Memo1.Lines.Add(IntToStr(r.Top));

Memo1.Lines.Add(IntToStr(r.Left));

Memo1.Lines.Add(IntToStr(r.Bottom));

Memo1.Lines.Add(IntToStr(r.Right));

end;

©Drkb::01830

http://delphiworld.narod.ru/

DelphiWorld 6.0

 


 

Code:

{ **** UBPFD *********** by delphibase.endimus.com ****

>> Получение координат области Рабочего стола, не скрытой Панелью задач

 

Зависимости: Windows

Автор:       Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург

Copyright:   Dimka Maslov

Дата:        4 ноября 2002 г.

***************************************************** }

 

function GetDesktopRect: TRect;

var

RgnDesktop, RgnTrayWnd: HRGN;

 

function CreateWindowRgn(Handle: HWND): HRGN;

var

   R: TRect;

begin

   GetWindowRect(Handle, R);

   with R do

     Result := CreateRectRgn(Left, Top, Right, Bottom);

end;

 

begin

RgnDesktop := CreateWindowRgn(GetDesktopWindow);

try

   RgnTrayWnd := CreateWindowRgn(FindWindow('Shell_TrayWnd', ''));

   try

     CombineRgn(RgnDesktop, RgnDesktop, RgnTrayWnd, RGN_DIFF);

     GetRgnBox(RgnDesktop, Result);

   finally

     DeleteObject(RgnTrayWnd);

   end;

finally

   DeleteObject(RgnDesktop);

end;

end;

©Drkb::01831