Определить размера рабочей области Desktop'а
Falk0ner, вс, 06/07/2008 - 15:34.
Иногда важно знать, какую часть экрана можно занимать, не перекрывая тем самым такие окна, как TaskBar. Эта программа разворачивает окно на всю рабочую область Desktop'а.
procedure TForm1.Button1Click(Sender: TObject);
var
r : TRect;
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, Addr(r), 0);
Form1.Left := r.Left;
Form1. := r.;
Form1.Width := r.Right - r.Left;
Form1.Height := r.Bottom - r.;
end;
var
r : TRect;
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, Addr(r), 0);
Form1.Left := r.Left;
Form1. := r.;
Form1.Width := r.Right - r.Left;
Form1.Height := r.Bottom - r.;
end;
Автор советов: Даниил Карапетян
e-mail: delphi4all@narod.ru
Автор справки: Алексей Денисов
e-mail: 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.));
Memo1.Lines.Add(IntToStr(r.Left));
Memo1.Lines.Add(IntToStr(r.Bottom));
Memo1.Lines.Add(IntToStr(r.Right));
end;
http://delphiworld.narod.ru/
DelphiWorld 6.0
var
r: TRect;
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, @r, 0);
Memo1.Lines.Add(IntToStr(r.));
Memo1.Lines.Add(IntToStr(r.Left));
Memo1.Lines.Add(IntToStr(r.Bottom));
Memo1.Lines.Add(IntToStr(r.Right));
end;
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение координат области Рабочего стола, не скрытой Панелью задач
Зависимости: Windows
Автор: Dimka Maslov, <a href="mailto:mainbox@endimus.ru">mainbox@endimus.ru</a>, 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, , 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;
>> Получение координат области Рабочего стола, не скрытой Панелью задач
Зависимости: Windows
Автор: Dimka Maslov, <a href="mailto:mainbox@endimus.ru">mainbox@endimus.ru</a>, 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, , 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;
Отправить комментарий