Delphi全面控制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;

时间: 2024-08-03 18:41:24

Delphi全面控制Windows任务栏的相关文章

找回丢失的Windows任务栏图标

Windows任务栏是包含开始按钮,默认情况下出现在桌面底部的栏.可通过单击任务栏按钮在运行的程序间切换.同时,在windows任务栏上,有不少图标,如显示桌面,语言栏等,它们能够方便大家的操作.如果这些图标突然不见了踪影,那么让我二百五来帮你找到丢失的windows任务栏图标吧. 找回丢失的windows 任务栏图标之快速启动栏 快速启动栏位于开始按钮的右侧,默认包含了显示桌面,IE等图标,它简化了你对这些程序的访问方式以及IE窗口的打开方式.如需你的电脑在任务栏上没有快速启动栏,请执行以下操

找回丢失的Windows系统任务栏图标

Windows任务栏是包含开始按钮,默认情况下出现在桌面底部的栏.可通过单击任务栏按钮在运行的程序间切换.同时,在windows任务栏上,有不少图标,如显示桌面,语言栏等,它们能够方便大家的操作.如果这些图标突然不见了踪影,那么让我二百五来帮你找到丢失的windows任务栏图标吧. 找回丢失的windows 任务栏图标之快速启动栏 快速启动栏位于开始按钮的右侧,默认包含了显示桌面,IE等图标,它简化了你对这些程序的访问方式以及IE窗口的打开方式.如需你的电脑在任务栏上没有快速启动栏,请执行以下操

找回丢失的Windows任务栏图标的方法

第一.找回丢失的windows 任务栏图标之语言栏 语言栏是我们输入汉字或字符时不可或缺的好帮手,因为要切换中英文输入法就离不开语言栏.如果语言栏没有显示出来,请按以下操作请其出山: A.依次单击"开始/控制面板/日期.时间.语言和区域设置/区域和语言选项" B.单击"语言"选项卡,在"文字服务和输入语言"下,单击"详细信息". C.单击"设置"选项卡,在"首选项"下,单击"语

delphi实现关闭Windows

控制WINDOWS的开关:如关闭WINDOWS,重新启动WINDOWS等, ExitWindowsEx(UINT uFlags,DWORD dwReserved);是实现这一功能的API函数 首先定义常数 const EWX_FORCE=4; //关闭所有程序并以其他用户身份登录 EWX_LOGOFF=0; //重新启动计算机并切换到MS-DOS方式 EWX_REBOOT=2; //重新启动计算机 EWX_SHUTDOWN=1;//关闭计算机 运行时给How赋值,让他等于EWX_SHUTDOWN

delphi编程控制壁纸

控制Windows的桌面壁纸是一些看图工具常有的功能,要实现该功能是非常容易的,以下的程序使壁纸换为我们想要的图片,如果THEPCHAR为空,那么就取消壁纸,变为Win默认色彩:但这种方法只是暂时的,在WINDOWS重新启动后还是恢复原来的位图,所以要永久保留还需要对WIN.INI文件进行改写操作,才能保存住我们改动的图片不被替换.但这种暂时性也好在让我们可以实现定时更换桌面图片功能: var THEPCHAR:pchar;beginTHEPCHAR:=e:\a.jpg;SystemParame

如何使用命令行控制Windows演示设置

演示设置的存在就是为了方便商务人士进行一键开启演示情景模式的.你可以把演示模式想象成电脑的一种特殊的情景模式 ,就好比手机上面的不同的情景模式对应着不同场合的铃声等系统方案一样.本文将向各位介绍如何使用命令行控制 Windows 演示设置. 在 Windows 7 上, 微软引入了一个叫 Windows 移动中心的程序,可以集中控制笔记本计算机的各项主要设 置,例如电源方案.屏幕亮度等等. 这里有一项功能其实很实用,但是可能鲜为人知,因为我没有发现身边的朋友中有多少人在使用它.它呢,就叫"演示

着眼注册表 有效控制Windows 7系统

在与Windows 7系统刚刚开始接触的时候,相信大家都会有一种耳目一新的感觉.不过,在全新的操作系统环境下,当我们尝试进行各种控制操作时,会发现并不如以往那样来得顺利了,这是什么原因呢?其实这是因为Windows 7系统对许多功能进行了改善和创新,我们可以采用多种方式对该系统进行控制,从而达到快速操作.提升效率的目的.这不,本文下面就着眼系统注册表,向各位朋友贡献几则有效控制Windows 7系统的技巧,相信这些内容能帮助大家高效操作好Windows 7系统! 1.控制侧边栏小工具显示 Win

在CB程序中控制Windows关机

我们在应用程序编制完成后,需要设计应用程序的包装和分发功能.在编写安装程序时,经常会遇到这样的问题:程序安装完成后需要重新启动计算机.那么在代码中如何控制Windows的关机或重新启动呢? 要实现这个功能,需要用到Windows API提供的一个ExitWindowsEx函数.我们可以通过查看C++ Builder提供的帮助文件得到这个函数的使用格式: BOOL ExitWindowsEx( UINT uFlags, // 设置关机参数 DWORD dwReserved // 系统保留字 );

Delphi下用Windows API创建窗体

// Delphi 下调用Windows API 创建窗体.// program delphi; uses windows, messages; const hellostr='Hello World!'; {$R delphi.res} //窗口消息处理函数. function MyWinProc(hWnd:THandle;uMsg:UINT;wParam,lParam:Cardinal):Cardinal;exp ort;stdcall; var hdca,hdcb:THandle; //设