線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2019
推到 Plurk!
推到 Facebook!

Shell_TrayWnd 的位置?

尚未結案
jck1
一般會員


發表:53
回覆:67
積分:24
註冊:2002-05-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-09-30 10:33:32 IP:211.22.xxx.xxx 未訂閱
請問有辦法知道 'Shell_TrayWnd' 在畫面上的 上、下、左或右嗎???
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-25 19:20:54 IP:61.221.xxx.xxx 未訂閱
好久以前的問題....  不過還是寫個小範例來解決這個問題. 利用 findwindow 先找出 Shell_TrayWnd 的 handle 後, 再利用 SHAppBarMessage 來取得 AppBar 的資料即可!!    記得要使用 ShellAPI 哦~ 參考資料: http://bdn.borland.com/article/0,1410,26977,00.html    
procedure TForm1.Button3Click(Sender: TObject);
var
  sthandle: HWND;
  abd: TAppBarData;
begin
  sthandle := FindWindow('Shell_TrayWnd', nil);
  if sthandle <> 0 then
  begin
    abd.cbSize := SizeOf(abd);
    if SHAppBarMessage(ABM_GETTASKBARPOS, abd) = 0 then
      raise Exception.Create('SHAppBarMessage returned false when trying to find the Task Bar''s position');
    // 0 for left, 1 for top, 2 for right, 3 for bottom
    case abd.uEdge of
      0: ShowMessage('AppBar is on left side');
      1: ShowMessage('AppBar is on top side');
      2: ShowMessage('AppBar is on right side');
      3: ShowMessage('AppBar is on bottom side');
      else
         ShowMessage('AppBar is unknown position!');
    end;
  end;
end;
jck1
一般會員


發表:53
回覆:67
積分:24
註冊:2002-05-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-26 13:37:19 IP:211.22.xxx.xxx 未訂閱
感謝timhuang兄 想不到這麼久的問題還有人回答我 真是太感動了 另外衍生的問題是 若Shell_TrayWnd位置不是設定為bottom的話 如何強迫他變為bottom呢?
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-26 14:24:16 IP:203.95.xxx.xxx 未訂閱
請參考這篇:    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/messages/abm_setpos.asp    利用 SHAppBarMessage(ABM_SETPOS, pabd);  並將傳入的 TAppBarData 的 uEdge 設定為 3 即可.    弟後來測試的結果是這樣設定是給 appbar 用的. 不能給 taskbar 一樣的操作, 還得試試看其他的方法才行 發表人 -
系統時間:2024-05-20 8:24:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!