利用Delphi全面控制Windows任务栏

利用Delphi全面控制Windows任务栏,第1张

利用Delphi全面控制Windows任务栏,第2张

使用Windows95/NT/98操作系统的用户都知道,Windows正常启动后,电脑屏幕下方会出现一个任务栏。从系统功能来看,整个任务栏包括几个不同的子区域,从左到右依次为:开始按钮、应用程序切换栏、任务栏通知区和任务栏时钟。像其他Windows应用程序一样,任务栏(systray.exe)由几个不同的窗体组成,它们有自己的窗口类名、显示方法和其他信息。所以,只要得到了窗口的信息,就可以通过编程来控制Windows任务栏的不同区域。

1.编程思想

(1)任务栏形式的窗口信息为:。

①任务栏的窗口类名为:shelltray。

②开始按钮的窗口类名为:Button。

③应用切换区的窗口类名为ReBarWindow32。

④任务栏通知区的窗口类名为:TrayNotifyWnd。

⑤任务栏时钟的窗口类名为TrayClockWClass。

(2)调用FindWindow函数获取任务栏的窗口句柄。

(3)调用FindWindowEx函数获取任务栏各分区的窗口句柄。

(4)根据窗口句柄,调用ShowWindow函数控制任务栏各区域的显示或隐藏(show/hide);调用En ableWindow函数来控制任务栏的每个区域是有效还是无效(启用/禁用)。

2.编程方法

(1)在Delphi3.0 IDE中创建新项目Project 1。项目1包含Form1,该表单如下图所示:

(2)定义窗口句柄数组:WND: array [0..4]的手柄;

(3)GetHandles过程代码如下:

程序TForm1。GetHandles
BEGIN
/获取托盘栏的窗口句柄;
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),′rebarwindow 32′,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)enable或Disable过程代码如下:

程序TForm1。EnableOrDisable(发送方:to object);begin
get handles;
if TCheckBox(发件人)。选中然后
case复选框(发件人)。
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 tcheck box(发送方)。
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;

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 利用Delphi全面控制Windows任务栏

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情