Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать, где находится панель ТаскБара?


TankMan ©   (2002-10-13 02:33:00) 

У меня вот проблема... вобщем сабж. И еще как узнать какой она высоты ?


TankMan   (2002-10-15 03:41:00) [1]

Спасибо попробую...


turusov   (2002-10-14 08:40:00) [2]

TAppBarData - ShellAPI


turusov   (2002-10-14 08:38:00) [3]

Где взял инф. для написания не помню, не спрашивате.
procedure GetDesktop(var R: TRect; var Edge: UInt);
var
AppBarData : TAppBarData;
bAlwaysOnTop, //Taskbar всегда на экране
bAutoHide : boolean;
Clrect, WRect : 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);
GetWindowRect(AppBarData.hwnd, WRect);
if (WRect.top > 0) then Edge := ABE_BOTTOM
else
if (WRect.bottom < screen.height) then Edge:=ABE_TOP
else
if WRect.right < screen.width then Edge:=ABE_LEFT
else
Edge:=ABE_RIGHT;
end;
{---}
begin
try
R:= Rect(Screen.DesktopLeft, Screen.DesktopTop,
Screen.DesktopWidth, Screen.DesktopHeight);
DetectTaskBar;
case Edge of
ABE_LEFT: begin
R.Left:= Screen.DesktopLeft + Clrect.Right + 4;
R.Right:= Screen.DesktopWidth - R.Left - 4;
end;
ABE_TOP: begin
R.Top:= Screen.DesktopTop + Clrect.Bottom + 4;
R.Bottom:= Screen.DesktopHeight - R.Top - 4;
end;
ABE_RIGHT: R.Right:= Screen.DesktopWidth - Clrect.Right - 4;
ABE_BOTTOM: R.Bottom:= Screen.DesktopHeight - Clrect.Bottom - 4;
end;//case

except
R:= Rect(Screen.DesktopLeft, Screen.DesktopTop,
Screen.DesktopWidth, Screen.DesktopHeight);
Edge:= ABE_BOTTOM;
end;
end;


Song   (2002-10-13 10:30:00) [4]

ShAppBarMessage()


Совет   (2002-10-13 09:38:00) [5]

Зайдите на сайт "Delphi X-Files" (www.delphixfiles.narod.ru). Там все написано!


pirat   (2002-10-13 09:30:00) [6]

берете winsight, находите окно таскбара (и как называется его оконный класс) и на каком он уровне вложенности (и путь к нему через его parents). В программе
с помощью EnumChildWindows отталкиваясь от окна с handle 0 доходите до таск бара. А дальше GetWindowRect или нечто подоюное (см MSDN)


Наверх

Титульная страница Поиск, карта сайта Написать письмо