Delphi 全面控制Windows任務欄


核心提示:使用Windows95/NT/98操作系統的用戶知道:Windows正常啟動后,在電腦屏幕下方出現一塊 任務欄。

 

使用Windows95/NT/98操作系統的用戶知道:Windows正常啟動后,在電腦屏幕下方出現一塊 任務欄。從系統功能角度而言,整個任務欄包括幾個不同的子區域,從左至右依次是:開始 按鈕、應用程序切換區(Application Switch Bar)、任務欄通知區(Notification Area)以 及任務欄時鍾。與其它Windows應用程序相同,任務欄程序(systray.exe)由幾個不同的窗體 組成,這些窗體是具有各自的窗口類名、顯示方式等信息。因此,只要得到有關窗口信息, 即可通過編程全面控制Windows任務欄的不同區域。

 

  1. 編程思想

 

  (1)任務欄窗體的窗口信息為:

 

  ①任務欄的窗口類名是:ShellTrayWnd。

 

  ②開始按鈕的窗口類名是:Button。

 

  ③應用程序切換區的窗口類名是:ReBarWindow32。

 

  ④任務欄通知區的窗口類名是:TrayNotifyWnd。

 

  ⑤任務欄時鍾的窗口類名是:TrayClockWClass。

 

  (2)調用FindWindow函數得到任務欄的窗口句柄。

 

  (3)調用FindWindowEx函數得到任務欄各子區域的窗口句柄。

 

  (4)根據窗口句柄,調用ShowWindow函數控制任務欄各區域顯示或隱藏 (show/hide);調用En ableWindow函數控制任務欄各區域有效或無效(enabled/disabled)。

 

  2. 編程方法

 

  (1)在Delphi3.0 IDE中新建工程Project1, Project1中包含Form1, 窗體如下圖所示:

 

  (2)定義窗口句柄數組:Wnd:array[0..4] of THandle;

 

  (3)GetHandles過程代碼如下:

 

 

procedure TForm1.GetHandles;

 

begin

 //得到Tray Bar的窗口句柄;

 Wnd[0]:=FindWindow(′ShellTrayWnd′,nil);

 //得到開始按鈕的窗口句柄;

 Wnd[1]:=FindWindow(′ShellTrayWnd′,nil);

 Wnd[1]:=FindWindowEx(Wnd[1],HWND(0),′Button′,nil); //得到應用程序切換區的窗口句柄;

 Wnd[2]:=FindWindow(′ShellTrayWnd′,nil);

 Wnd[2]]:=FindWindowEx(Wnd[2],HWND(0),′ReBarWindow32′,nil);

 //得到任務欄通知區的窗口句柄;

 Wnd[3]:=FindWindow(′ShellTrayWnd′,nil);

 Wnd[3]:=FindWindowEx(Wnd[3],HWND(0),′TrayNotifyWnd′,nil);

 //得到任務欄時鍾的窗口句柄;

 Wnd[4]:=FindWindow(′ShellTrayWnd′,nil);

 Wnd[4]:=FindWindowEx(Wnd[4],HWND(0),′TrayNotifyWnd′,nil);

 Wnd[4]:=FindWindowEx(Wnd[4],HWND(0),′TrayCLockWClass′,nil);

end;

 

http://blog.csdn.net/yanjiaye520/article/details/6659536


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM