使用Windows
/NT/
操作系統的用戶知道
Windows正常啟動後
在電腦屏幕下方出現一塊 任務欄
從系統功能角度而言
整個任務欄包括幾個不同的子區域
從左至右依次是
開始 按鈕
應用程序切換區(Application Switch Bar)
任務欄通知區(Notification Area)以 及任務欄時鐘
與其它Windows應用程序相同
任務欄程序(systray
exe)由幾個不同的窗體 組成
這些窗體是具有各自的窗口類名
顯示方式等信息
因此
只要得到有關窗口信息
即可通過編程全面控制Windows任務欄的不同區域
編程思想
(
)任務欄窗體的窗口信息為
①任務欄的窗口類名是
ShellTrayWnd
②開始按鈕的窗口類名是
Button
③應用程序切換區的窗口類名是
ReBarWindow
④任務欄通知區的窗口類名是
TrayNotifyWnd
⑤任務欄時鐘的窗口類名是
TrayClockWClass
(
)調用FindWindow函數得到任務欄的窗口句柄
(
)調用FindWindowEx函數得到任務欄各子區域的窗口句柄
(
)根據窗口句柄
調用ShowWindow函數控制任務欄各區域顯示或隱藏 (show/hide)
調用En ableWindow函數控制任務欄各區域有效或無效(enabled/disabled)
編程方法
(
)在Delphi
IDE中新建工程Project
Project
中包含Form
窗體如下圖所示
(
)定義窗口句柄數組
Wnd:array[
] of THandle;
(
)GetHandles過程代碼如下
procedure TForm
GetHandles;
begin
//得到Tray Bar的窗口句柄
Wnd[
]:=FindWindow(′ShellTrayWnd′
nil);
//得到開始按鈕的窗口句柄
Wnd[
]:=FindWindow(′ShellTrayWnd′
nil);
Wnd[
]:=FindWindowEx(Wnd[
]
HWND(
)
′Button′
nil); //得到應用程序切換區的窗口句柄
Wnd[
]:=FindWindow(′ShellTrayWnd′
nil);
Wnd[
]]:=FindWindowEx(Wnd[
]
HWND(
)
′ReBarWindow
′
nil);
//得到任務欄通知區的窗口句柄
Wnd[
]:=FindWindow(′ShellTrayWnd′
nil);
Wnd[
]:=FindWindowEx(Wnd[
]
HWND(
)
′TrayNotifyWnd′
nil);
//得到任務欄時鐘的窗口句柄
Wnd[
]:=FindWindow(′ShellTrayWnd′
nil);
Wnd[
]:=FindWindowEx(Wnd[
]
HWND(
)
′TrayNotifyWnd′
nil);
Wnd[
]:=FindWindowEx(Wnd[
]
HWND(
)
′TrayCLockWClass′
nil);
end
[] []
From:http://tw.wingwit.com/Article/program/Delphi/201311/8478.html