翻新时间:2023-06-04
利用Delphi全面控制Windows任务栏
利用Delphi全面控制Windows任务栏 利用Delphi全面控制Windows任务栏 信息技术论文 更新:2006-4-8 阅读: 利用Delphi全面控制Windows任务栏
(中国人民解放军合肥炮兵学院研究生系97级)
韩莹
(中保财险安徽省铜陵市分公司计财部)
使用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;
(4)EnableOrDisable过程代码如下:
procedure TForm1.EnableOrDisable(Sender:TOBject);
begin
GetHandles;
if TCheckBox(Sender). Checked then
case TCheckBox(Sender). Tag of
0: EnableWindow(Wnd[0], False);
1: EnableWindow(Wnd[1], False);
2: EnableWindow(Wnd[2], False);
3: EnableWindow(Wnd[3], False);
4: EnableWindow(Wnd[4], False);
end
else
case TCheckBox(Sender). Tag of
0: EnableWindow(Wnd[0], True);
1: EnableWindow(Wnd[1], True);
2: EnableWindow(Wnd[2], True);
3: EnableWindow(Wnd[3], True);
4: EnableWindow(Wnd[4], True);
end;
end;
(5)HideOrShow过程代码如下:
procedure TForm1.HideOrShow(Sender:TObject);
begin
GetHandles;
if TCheckBox(Sender). Checked then
case TCheckBox(Sender). Tag of
0: ShowWindow(Wnd[0],SWHIDE);
1: ShowWindow(Wnd[1],SWHIDE);
2: ShowWindow(Wnd[2],SWHIDE);
3: ShowWindow(Wnd[3],SWHIDE);
4: ShowWindow(Wnd[4],SWHIDE);
end
else
case TCheckBox(Sender). Tag of
0: ShowWindow(Wnd[0],SWShow);
1: ShowWindow(Wnd[1],SWShow);
2: ShowWindow(Wnd[2],SWShow);
3: ShowWindow(Wnd[3],SWShow);
4: ShowWindow(Wnd[4],SWShow);
end;
end;
(6)FormClose事件代码如下://将Windows任务栏恢复到正常状态;
procedure TForm1.FormClose(Sender:TObject; var Action: TCloseAction);
var i:Integer;
begin
for i:=0 to 4 do
begin
EnableWindow(Wnd[i],True);
ShowWindow(Wnd[i],SWShow);
end;
end;
(7)按F9运行程序。以上程序在Delphi3.0/4.0、Windows95/98简体中文版环境下调试通过。
(8)说明:本文所述方法同样适用于VB、VC、BC、C++Builder等编程工具,但应注意语法、 变量类型等不同要求。
下载文档
网友最新关注
- 流浪的二胡
- 流行音乐之我见
- 小镇的成长
- 社区植树
- 续写《孔乙己》
- 在社区活动站的日子
- 走过三米
- 我们的社区
- 社区活动站的“大管家”
- 住在A座的人
- 新苑社区法院宿舍环境报告
- 社区变了
- 音乐的魅力
- 续写《孔乙己》
- 咱说小康
- 员工辞职报告怎么写
- 入党申请书的写法格式
- 英文摘要的写作要求
- 离职报告怎么写
- 毕业生自荐材料如何写?
- 生产实习报告格式
- 浅谈先进事迹材料的写作
- 入团申请书的写法格式
- 掌握读后感的写作格式
- 体育比赛发言稿的写作
- 简历的其它注意事项
- 如何写好入党申请书?
- 自荐材料的基本结构
- 写好读后感活用“四字诀”
- 市场调研报告格式
- 专家预计未来五年绿色节能建筑将成主流
- 设计思维
- 创新住宅的尝试
- 中西方古建筑色彩浅析
- 建筑节能任重道远
- 浅谈建筑的艺术
- 有机建筑
- 我国空间结构建筑的发展趋势和变化
- 建筑业技术发展方向和重点
- 现代主义建筑
- 让艺术回到它的本位
- 罗曼建筑
- 大开间灵活性住宅初探
- 建筑市场与建筑质量
- 宫与殿的区别
- 《牧场之国》教学设计一
- 《乡下人家》教学设计一
- 《乡下人家》美文欣赏 故都的秋
- 《乡下人家》考点练兵 阅读篇
- 《乡下人家》写作指导
- 《牧场之国》随堂练习 提高篇
- 《乡下人家》整体阅读感知
- 《乡下人家》随堂练习 巩固篇
- 《牧场之国》随堂练习 巩固篇
- 《乡下人家》趣闻故事
- 《乡下人家》美文欣赏 等你,是一种风景
- 《牧场之国》老师语录
- 《牧场之国》重点问题探究
- 《乡下人家》教学设计二
- 《乡下人家》随堂练习 提高篇