Blog. Just Blog

Как узнать состояние и размеры панели задач Windows

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Образ мышления: Assembler | Автор: ManHunter
Для получения рабочей области экрана, доступной вашему приложению, может потребоваться определение положения и размера панели задач. Управлять положением и состоянием панели задач пользователь может через меню свойств или через апплет настроек. А для получения всех необходимых данных надо воспользоваться функцией SHAppBarMessage. Но сперва структура и несколько констант, которые будут нам нужны для работы.
  1. struct APPBARDATA
  2.     cbSize           dd ?
  3.     hwnd             dd ?
  4.     uCallbackMessage dd ?
  5.     uEdge            dd ?
  6.     rc               RECT
  7.     lParam           dd ?
  8. ends
  9.  
  10. ABM_GETSTATE = 4
  11. ABM_GETTASKBARPOS = 5
С помощью сообщения ABM_GETTASKBARPOS получаем положение и размеры панели задач:
  1.         mov     [abd.cbSize],sizeof.APPBARDATA
  2.         invoke  SHAppBarMessage,ABM_GETTASKBARPOS,abd
  3.         ; [abd.uEdge] -> положение панели задач
  4.         ; 0 = слева
  5.         ; 1 = сверху
  6.         ; 2 = справа
  7.         ; 3 = снизу
  8.         ; [abd.rc] -> координаты Панели задач
Но тут надо понимать, что на экране могут присутствовать другие панели, которые также отнимают полезную площадь экрана. Для точного определения доступной области пользуйтесь функцией GetMonitorInfo.

С помощью сообщения ABM_GETSTATE получаем текущее состояние настроек панели задач. Это комбинация флагов "автоматически убирать с экрана" и "показывать поверх всех окон":
  1.         mov     [abd.cbSize],sizeof.APPBARDATA
  2.         invoke  SHAppBarMessage,ABM_GETSTATE,abd
  3.         ; EAX -> состояние панели задач
  4.         ; 0 = не убирать автоматически и не показывать поверх всех окон
  5.         ; 1 = автоматически убирать с экрана
  6.         ; 2 = показывать поверх всех окон
  7.         ; 3 = автоматически убирать с экрана и показывать поверх всех окон
В приложении пример программы с исходным текстом, которая выводит текущее состояние и размеры панели задач.

Пример программы с исходным текстом (FASM)Пример программы с исходным текстом (FASM)

Get.TaskBar.Position.Demo.zip (1,863 bytes)


Поделиться ссылкой ВКонтакте
Просмотров: 858 | Комментариев: 0

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
Комментариeв нет

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

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.09 сек. / MySQL: 2 (0.0178 сек.) / Память: 4.5 Mb
Наверх