HOW TO:将程序窗口嵌入到任务栏中
分类: VB.NET 2011-08-02 08:01 158人阅读 评论(3) 收藏 举报
今天我们来看看VB.NET怎样将程序窗口嵌入到任务栏(Taskbar)中,下图是我们实现的效果。
开始之前,小孟先简单介绍一下任务栏的组成,在这里小孟只介绍与我们的程序有关的部分。整个任务栏是有一个大的窗口容器(该容器类名是Shell_TrayWnd)和一些窗口共同组成的,在这个类名是Shell_TrayWnd的容器中,有一个类名是ReBarWindow32的二级容器。这个二级容器中包含的窗口在Win7和WinXP中是不同的(小孟使用的Win7,不过在这个程序中Win7和WinXP的效果都是一样的)。在WinXP中,包含一个类名是MSTaskSwWClass的窗口外,这个窗口就是来显示任务栏按钮的(就是显示你打开了哪些窗口的那个区域,在这里小孟叫他最小化窗口),还包含快速启动栏(在左侧以小图标显示,单击后会启动相应程序的那个区域);在Win7中只有一个类名是MSTaskSwWClass的窗口,因为Win7中没有快速启动栏,虽然左侧也有一个类似快速启动的区域,但那个并不是快速启动,而是属于最小化窗口的一部分。以上就是与我们程序有关的任务栏组成了,小孟这表达能力很有限,大家可能看不懂,so 小孟在下面贴了一张图。
=====================================================================================
Win7:
红色区域:类名是Shell_TrayWnd的容器 黄色区域:类名是ReBarWindow32的二级容器
绿色区域:类名是MSTaskSwWClass的窗口
WinXP:
红色区域:红色区域——类名是Shell_TrayWnd的容器 黄色区域:类名是ReBarWindow32的二级容器
绿色区域:快速启动区域 紫色窗口:类名是MSTaskSwWClass的窗口
=====================================================================================
任务栏组成我们介绍完了,下面我们说说大体的思路。首先,我们要最小化窗口的width缩短,来给我们的程序腾出地方;然后,将我们的程序设置成任务栏的子窗口,以便于嵌入任务栏;最后,调整程序的大小和在任务栏中的位置。
准备工作做了这么多,下面正式开工。
新建一个【Windows窗体应用程序】。将窗体BorderStyle属性改成None来把窗体的边框去掉。然后在窗体上添加一个文本框,如下图所示:
下面开始写代码。
我们先把程序需要用到的API和structure来声明一下(先在类外面加上ImportsSystem.Runtime.InteropServices):
[vb] view plaincopyprint?