Q&A

  • 작업 표시줄이 자동숨김인지 아닌지를 알고 싶습니다.
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등으로 나옵니다.



제가 알고 싶은것은 작업표시줄을 자동숨김인지 아닌지를 알아내는 방법입니다.







1  COMMENTS
  • Profile
    구창민 2000.09.28 05:45
    견우2 wrote:

    > 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;