Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.16;
Скачать: CL | DM;

Вниз

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

 
TankMan ©   (2002-10-13 02:33) [0]

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


 
pirat ©   (2002-10-13 09:30) [1]

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


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

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


 
Song ©   (2002-10-13 10:30) [3]

ShAppBarMessage()


 
turusov ©   (2002-10-14 08:38) [4]

Где взял инф. для написания не помню, не спрашивате.
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;


 
turusov ©   (2002-10-14 08:40) [5]

TAppBarData - ShellAPI


 
TankMan ©   (2002-10-15 03:41) [6]

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



Страницы: 1 вся ветка

Текущий архив: 2002.12.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
1-51722
vasilly
2002-12-06 11:13
2002.12.16
Как встроить форму из DLL в любой контрол, например TPanel????:(


1-51731
alia
2002-12-06 13:13
2002.12.16
Как програмно сменить принтер ?


4-52035
cardinal
2002-10-31 02:36
2002.12.16
Как узнать адреса процессов в w98?


7-51970
OMPH!!!
2002-10-14 20:16
2002.12.16
Есть ли у нас Сидюк?


1-51732
Berg
2002-12-06 14:38
2002.12.16
Operator not applicable to this operand type