Q&A에서 작업표시줄에대해 알고싶어서 검색해 봤더니
이렇게 되어있더군요..
// 아래는 taskbar의 상태를 알애내는 부분입니다
hand := findWindow ('Shell_TrayWnd', nil);
if hand = 0 then {task bar가 설정되어 있지 않은 상태입니다};
if hand <> 0 then
begin
// GetWindowRect 함수는 주어진 윈도우의 좌표(좌,상,우,하의 값을 리턴합니다}
GetWindowRect(hand, r);
{r.bottom - r.top 값이 taskbar의 높이가 되겠죠 }
{만약 r.bottom - r.top 값이 6 이하이면 자동숨김(autohide) 상태임을 나타냅니다}
end;
근데 6이하이면 자동감추기라고 하셨는데 r.bottom과 r.top의 값은 실행시마다 바뀌고 그 값이 -2122677964, 4995000등으로 나옵니다.
제가 알고 싶은것은 작업표시줄을 자동숨김인지 아닌지를 알아내는 방법입니다.
> Q&A에서 작업표시줄에대해 알고싶어서 검색해 봤더니
>
>
> 이렇게 되어있더군요..
>
> // 아래는 taskbar의 상태를 알애내는 부분입니다
> hand := findWindow ('Shell_TrayWnd', nil);
> if hand = 0 then {task bar가 설정되어 있지 않은 상태입니다};
> if hand <> 0 then
> begin
> // GetWindowRect 함수는 주어진 윈도우의 좌표(좌,상,우,하의 값을 리턴합니다}
> GetWindowRect(hand, r);
> {r.bottom - r.top 값이 taskbar의 높이가 되겠죠 }
> {만약 r.bottom - r.top 값이 6 이하이면 자동숨김(autohide) 상태임을 나타냅니다}
> end;
>
>
>
>
> 근데 6이하이면 자동감추기라고 하셨는데 r.bottom과 r.top의 값은 실행시마다 바뀌고 그 값이 -2122677964, 4995000등으로 나옵니다.
>
> 제가 알고 싶은것은 작업표시줄을 자동숨김인지 아닌지를 알아내는 방법입니다.
>
>
>
먼저 uses 절에 ShellAPI 를 추가하시고,
아래 형태로 작성하시면 됩니다.
var
YesNo : Boolean;
ABData : TAppBarData;
begin
ABData.cbSize := sizeof(ABData);
YesNo := (SHAppBarMessage(ABM_GETSTATE, ABData) and ABS_AUTOHIDE) > 0;
if YesNo then
begin
//자동숨김인 경우 특정 처리...
end;
end;