Delphi 全面控制Windows任务栏

核心提示:使用Windows95/NT/98操作系统的用户知道: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;

http://blog.csdn.net/yanjiaye520/article/details/6659536

时间: 2024-10-11 23:10:53

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

[delphi技术]隐藏/显示任务栏-程序不在任务显示-全面控制Windows任务栏

1.隐藏任务条 var  h:THandle; //变量h:=FindWindow('Shell_TrayWnd',nil);ShowWindow(h,SW_hide); 2.显示任务条h:=FindWindow('Shell_TrayWnd',nil);ShowWindow(h,SW_SHOW); 3.怎样在Delphi中调用API函数使任务不在任务栏中显示出来 SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW); Sh

C#实现控制Windows系统关机、重启和注销的方法:

shutdown命令的参数: shutdown.exe -s:关机shutdown.exe -r:关机并重启shutdown.exe -l:注销当前用户 shutdown.exe -s -t 时间:设置关机倒计时shutdown.exe -h:休眠shutdown.exe -t 时间:设置关机倒计时.默认值是 30 秒.shutdown.exe -a:取消关机shutdown.exe -f:强行关闭应用程序而没有警告shutdown.exe -m \计算机名:控制远程计算机shutdown.ex

C#实现控制Windows系统关机、重启和注销的方法

shutdown.exe -s:关机shutdown.exe -r:关机并重启shutdown.exe -l:注销当前用户 shutdown.exe -s -t 时间:设置关机倒计时shutdown.exe -h:休眠shutdown.exe -t 时间:设置关机倒计时.默认值是 30 秒.shutdown.exe -a:取消关机shutdown.exe -f:强行关闭应用程序而没有警告shutdown.exe -m \计算机名:控制远程计算机shutdown.exe -i:显示"远程关机&qu

ansible控制windows安装及运行error与解决方法

Q1:安装kerberos报错 $ sudo pip install kerberos running build_ext building 'kerberos' extension creating build creating build/temp.linux-x86_64-2.7 creating build/temp.linux-x86_64-2.7/src gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -

windows 任务栏图标宽度固定

这个需要修改注册表. win+r regedit ->enter 找到以下项 HKEY_CURRENT_USER-Control Panel-Desktop-WindowsMetrics 新建字符键值.. MinWidth 54 MaxWidth 55 注销重新登录.. 效果如图. windows 任务栏图标宽度固定,码迷,mamicode.com

管理员控制Windows Service

C# 以管理员方式启动Winform,进而使用管理员控制Windows Service 问题起因: 1,) 问题自动分析Windows服务在正常运行时,确实会存在程序及人为原因导致该服务停止.为了在应用程序使用时确保该服务正常运行,于是有了该讨论主题. 2,)一般账户(尽管是管理员组账户)使用c#代码启动服务,依然会抛出异常,因为当前程序启动账户级别并不是管理员级别. 以管理员启动应用程序解决方案及测试: 为了解决程序以管理员组角色启动应用程序,我们需要在应用程序的工程中添加一个“Applica

C#使用ServiceController控制windows服务

C#中,使用ServiceController类控制windows服务,使用之前要先添加引用:System.ServiceProcess,然后在命名空间中引用:using System.ServiceProcess.下面举例获取本机的所有已安装的Windows服务和应用,然后查找某一应用活服务是否已经安装. 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.D

Delphi中控制Excel(转载)

用Delphi从数据库中取得资料,然后导出到Excel中做成报表是个不错的选择,因为Excel强大的报表功能那可是没话说前提Delphi中要 uses comobj;var Excel:Variant;一.Excel操作1.创建Excel对象Excel := CreateOleObject( Excel.Application );2.显示ExcelExcel.Visible:=true;3.更改标题Excel.Caption:=Excel的标题;4.退出ExcelExcel.Quit;二.工作

.NET 控制Windows文件和目录访问权限研究(FileSystemAccessRule)

前一段时间学习了.net 控制windows文件和目录权限的相关内容,期间做了一些总结.想把这方面的研究跟大家分享,一起学习.其中不免得有些用词不太标准的地方,希望大家留言指正留言,我加以修改. 首先,我们利用一个方法作为示例: /// <summary> /// 为指定用户组,授权目录指定完全访问权限 /// </summary> /// <param name="user">用户组,如Users</param> /// <par