Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Определить позицию панели задач

Delphi , Рабочий стол , TaskBar

Определить позицию панели задач

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{With SHAppBarMessage }

 uses
   ShellAPI;

 procedure TForm1.Button1Click(Sender: TObject);
 var
   tabd: TAppBarData;
   PosString: string;
 begin
   FillChar(tabd, SizeOf(TAppBarData), 0);
   tabd.cbSize := SizeOf(TAppBarData);
   if SHAppBarMessage(ABM_GETTASKBARPOS, Tabd) = 0 then Exit;
   with Tabd.rc do
     PosString := Format(' (%d, %d);(%d, %d) ', [Left, Top, Right, Bottom]);
   case tabd.uEdge of
     ABE_LEFT: ShowMessage('Left Position' + PosString);
     ABE_TOP: ShowMessage('Top Position' + PosString);
     ABE_RIGHT: ShowMessage('Right Position' + PosString);
     ABE_BOTTOM: ShowMessage('Bottom Position' + PosString);
   end;
 end;

Код, предоставленный в этом примере, определяет процедуру, которая использует функцию SHAppBarMessage для получения позиции панели задач (также известной как панель задач) на рабочем столе. Функция SHAppBarMessage является частью Windows Shell API и позволяет коммуницировать с панелью задач.

Вот разбивка того, что код делает:

  1. Он объявляет переменную tabd типа TAppBarData, которая представляет собой структуру данных, используемую функцией SHAppBarMessage для получения информации о панели задач.
  2. Функция FillChar используется для очистки памяти, выделенной для tabd.
  3. Свойство cbSize переменной tabd устанавливается в размер структуры TAppBarData, который необходим функции SHAppBarMessage.
  4. Если вызов функции SHAppBarMessage возвращает ошибку (т.е. 0), код выходит из процедуры.
  5. Позиция панели задач получается с помощью свойства rc переменной tabd, которое содержит координаты прямоугольника панели задач (x, y, ширина и высота).
  6. Позиция форматируется в виде строки (PosString) в формате "(left, top);(right, bottom)".
  7. В зависимости от значения свойства uEdge переменной tabd, которое указывает, находится ли панель задач на левой, верхней, правой или нижней кромке экрана, отображается сообщение с информацией о позиции.

В этом альтернативном решении используется функция GetSystemMetrics, которая предоставляет более контролируемый вывод:

procedure TForm1.Button1Click(Sender: TObject);
var
  LeftEdge, TopEdge: Integer;
begin
  LeftEdge := GetSystemMetrics(SM_CXEDGE);
  TopEdge := GetSystemMetrics(SM_CYEDGE);

  case GetSystemMetrics(SM_MEDIANETWORKWIDTH) of
    0:
      ShowMessage('Taskbar is at the left edge');
    1:
      ShowMessage('Taskbar is at the top edge');
    2:
      ShowMessage('Taskbar is at the right edge');
    3:
      ShowMessage('Taskbar is at the bottom edge');
  end;

  // Display the position as a string
  ShowMessage(Format('Left: %d, Top: %d', [LeftEdge, TopEdge]));
end;

В этом альтернативном решении мы используем функцию GetSystemMetrics для получения информации о позиции панели задач. Константы SM_CXEDGE и SM_CYEDGE указывают координаты левой и верхней кромок панели задач, в то время как SM_MEDIANETWORKWIDTH указывает, на какой кромке находится панель задач (0 = left, 1 = top, 2 = right, 3 = bottom). Затем мы используем оператор case для определения позиции и отображаем ее в сообщении.

Определить позицию панели задач в программе на языке Delphi с помощью функции SHAppBarMessage и формирования структуры TAppBarData.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TaskBar ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:39:09/0.0057661533355713/1