Чем мы Винду сильнее любим, тем дольше грузится она.
Пример позволяет узнать координаты расположения
панели задач.
uses .., ShellApi;
var
AppBarData : TAppBarData;
bAlwaysOnTop: Boolean; {Поверх окон}
bAutoHide : boolean; {Авт. убирать с экрана}
ClRect : TRect; {Клиентские области}
Rect : TRect;
Edge : UInt; {Местоположение TaskBar}procedure DetectTaskBar;
begin
AppBarData.hWnd := FindWindow('Shell_TrayWnd', nil);
AppBarData.cbSize := sizeof(AppBarData);
bAlwaysOnTop := (SHAppBarMessage(ABM_GETSTATE, AppBardata) and ABS_ALWAYSONTOP) < > 0;
bAutoHide := (SHAppBarMessage(ABM_GETSTATE, AppBardata) and ABS_AUTOHIDE) < > 0;
GetClientRect(AppBarData.hWnd, ClRect.rc);
GetWindowRect(AppBarData.hwnd, rect);
if (Rect.top > 0) Then
Edge := ABE_BOTTOM
elseif (Rect.Bottom < Screen.Height) Then
Edge := ABE_TOP
elseif Rect.Right < Screen.Width Then
Edge := ABE_LEFT
else
Edge := ABE_RIGHT;
end;
Программный код на Delphi, который обнаруживает координаты панели задач (TaskBar) в системе Windows. Панель задач - это компонент операционной системы Windows, отображающий иконки и уведомления.
Код определяет несколько переменных:
AppBarData: экземпляр типа TAppBarData, представляющий AppBar (окно, которое может быть прикреплено к краю экрана).
bAlwaysOnTop: логическое значение, указывающее, является ли панель задач всегда на переднем плане других окон.
bAutoHide: логическое значение, указывающее, скрывается ли панель задач при неиспользовании.
ClRect и Rect: два экземпляра типа TRect, представляющие прямоугольники (регионы с шириной и высотой).
Edge: неотрицательное целое значение, представляющее край экрана, на котором находится панель задач.
Код определяет процедуру DetectTaskBar, которая выполняет следующие шаги:
Он находит handle окна панели задач с помощью функции FindWindow, поиска окна с заголовком "Shell_TrayWnd".
Он устанавливает размер структуры AppBarData в размер собственного типа (sizeof(AppBarData)).
Он использует функцию SHAppBarMessage для получения состояния панели задач (например, является ли она всегда на переднем плане или скрывается при неиспользовании). Результат хранится в переменных bAlwaysOnTop и bAutoHide.
Он получает клиентский прямоугольник (область внутри окна) панели задач с помощью функции GetClientRect, и хранит его в ClRect.
Он получает прямоугольник окна (весь экран, включая рамки) панели задач с помощью функции GetWindowRect, и хранит его в Rect.
Он проверяет верхний, нижний, правый или левый край прямоугольника панели задач против высоты и ширины экрана для определения края экрана, на котором находится панель задач. Результат хранится в переменной Edge.
Возможные значения для Edge:
ABE_BOTTOM: панель задач находится внизу экрана.
ABE_TOP: панель задач находится сверху экрана.
ABE_LEFT: панель задач находится слева от экрана.
ABE_RIGHT: панель задач находится справа от экрана.
Код не указывает явно, что делать с этими координатами, но одним из возможных использований может быть позиционирование окна или контроля вблизи или рядом с панелью задач.
Определение координат расположения TaskBar в Windows через использование функций ShellApi и получение информации о состоянии TaskBar.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.