Видна ли панель задач?
Мне нужно знать, назначена ли панель задач, но флажок "Автоматически скрывать панель задач" отмечен и панель задач временно скрыта. У меня есть функция возвращает высоту панели задач, если она была назначена или ноль, если нет.
Но если в Windows установлена опция "Автоскрытие", функция по-прежнему возвращает высоту панели задач, хотя она не видна, пока курсор не переместится к нижнему краю экрана.
Когда я устанавливаю Image.Height:=Screen.Height-MyTaskbarHeight, он устанавливает высоту изображения, как если бы панель задач была видна все время.
В псевдокоде мне нужно
if Taskbar.Assigned then
if Taskbar.AutoHide.Checked then // Assume it is hidden
Image.Height:=Screen.Height else
Image.Height:=Screen.Height-MyTaskbarHeight;
Какие-либо предложения?
Спасибо
2 ответа
Решение
TAppBarData определяется в ShellAPI.
var
ABData : TAppBarData;
State: Cardinal;
begin
ABData.cbSize := sizeof(ABData);
State := SHAppBarMessage(ABM_GETSTATE, ABData);
Result := (State and ABS_AUTOHIDE) = ABS_AUTOHIDE;
end;
Вы можете использовать SHAppBarMessage
функция
Uses
ShellApi;
function IsTaskbarAutoHideOn : Boolean;
Var
ABData : TAppBarData;
begin
ABData.cbSize := SizeOf(ABData);
Result:= (SHAppBarMessage(ABM_GETSTATE, ABData) and ABS_AUTOHIDE)<>0;
end;
function GetTaskBarRect(var ARect: TRect): Integer;
var
ABData: TAppBarData;
begin
ABData.cbSize := SizeOf(ABData);
if SHAppBarMessage(ABM_GETTASKBARPOS, ABData) <> 0 then
Result := ABData.uEdge;
ARect := ABData.rc;
end;