教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 论文> 其他论文> 利用Delphi全面控制Windows任务栏

利用Delphi全面控制Windows任务栏

上传者:网友
|
翻新时间: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等编程工具,但应注意语法、 变量类型等不同要求。

下载文档

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

网友最新关注

牵牛花
枇杷树
读《列宁小时侯的故事》有感
告诉我走路的人
未来的桥
龙眼
假如我会克隆
太阳和月亮
qq问问
数学测验
我的爷爷
今天我来改作业
森林里的故事
假如我是“孙悟空”
关于毕业生就业指导工作的探索与实践
针对绿色贸易壁垒我国的对策与思考(1)
关于加强成教毕业生就业指导工作的思考
为行偏生撑起一片蓝天
论金融服务在区域经济中的发展前景(1)
我国电子商务第三方支付的风险分析及控制
论高校毕业生的就业及就业指导人员的素质
关于中美大学生就业指导工作的比较研究
走出比较优势困境实现对外贸易增长方式转变(1)
农村公共产品供给对农民收入的影响分析(1)
浅论高职院校就业指导工作的研究与实践
资源约束成为制造业发展模式提升的改革思路(1)
与时俱进,浅谈从根本上抓好高校学生就业指导工作
论创业教育在就业教育中的地位及大学生创业素质的培养
北京研发服务业sWOT分析与发展对策研究
《称象》片断赏析一
《乌鸦喝水》教学设计二十
《乌鸦喝水》片断赏析二
《乌鸦喝水》的字词教学:随课文识字
《乌鸦喝水》课后研究活动
《称象》片断赏析二
《司马光》教学设计九
《司马光》教学设计七
《司马光》教学札记
《乌鸦喝水》片断赏析一
《司马光》教学设计一
《司马光》教学设计二(第一课时)
《乌鸦喝水》教材特点及教学建议
《司马光》教学片段设计
《司马光》杂谈