Определить размера рабочей области Desktop'а
01.01.2007
Иногда важно знать, какую часть экрана можно занимать, не перекрывая тем самым такие окна, как TaskBar. Эта программа разворачивает окно на всю рабочую область Desktop'а.
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;
Автор справки: Алексей Денисов (aleksey@sch103.krasnoyarsk.su)
Воспользуйтесь функцией SystemParametersInfo(), переслав ей в качестве параметров - SPI_GETWORKAREA и адрес структуры типа TRect, куда будут передан полученный результат:
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;
DelphiWorld 6.0
{ **** 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;