Содержание материала

 

Иногда важно знать, какую часть экрана можно занимать, не перекрывая тем самым такие окна, как 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;

 

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

e-mail: Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

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

e-mail: Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

 

Воспользуйтесь функцией 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;

 


 

Code:

{ **** UBPFD *********** ****

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

 

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

Автор:       Dimka Maslov, Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., ICQ:148442121, Санкт-Петербург

Copyright:   Dimka Maslov

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

 

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;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить