VB.NET编程之托盘程序篇2008-04-23马金虎托盘程序是指这样一类程序:当程序运行后,会在系统的托盘区(也有说是状态区域)创建此程序的图标,使用者可以通过点击图标出现的菜单来控制程序的运行状态。托盘程序有很多优点,如不占屏幕,后台运行,便于控制等。所以现在越来越多的程序都做成了托盘程序。在VB.NET中,编写托盘程序是比较方便和简单的。这是因为VB.NET没有自身类库,它所使用的类库是.Net框架中为所有.Net平台开发语言提供的公用类库——.Net FrameWork SDK。在这个类库中,为编写托盘程序提供了具体的类,调用这些类就可以实现程序的托盘效果了。从而也就摆脱了它的前身VB在处理这类问题时候的烦琐。下面就通过二个具体例子来了解并掌握如何用VB.NET编写托盘程序。本文程序的设计及运行环境(1)Windows 2000 Service(2)Net Framework SDK 正式版静态托盘程序的编写过程所谓静态托盘程序是指程序运行后,在系统托盘区的图标处于静止状态的托盘程序。动态托盘程序正好与之相反,它是指在系统托盘区图标呈现动画效果的一类托盘程序。下面就来探讨一下VB.NET是如何实现静态托盘程序。.Net FrameWork SDK为编写托盘程序提供了一个组件:NotifyIcon组件。NotifyIcon组件是一个WinForm组件,位于命名空间"System.Windows.Forms"中,在VB.NET程序中,只要创建一个NotifyIcon组件的实例,并且对NotifyIcon实例的"Icon"属性赋值,这样一个简单的托盘程序就完成了。下面就是这个简单托盘程序对于的代码(Form1.vb):Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows 窗体设计器生成的代码 " Public Sub New ( ) MyBase.New ( ) "该调用是 Windows 窗体设计器所必需的。 InitializeComponent ( ) "在 InitializeComponent ( ) 调用之后添加任何初始化 End Sub "窗体重写处置以清理组件列表。 Protected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean ) If disposing Then If Not ( components Is Nothing ) Then components.Dispose ( ) End If End If MyBase.Dispose ( disposing ) End Sub "Windows 窗体设计器所必需的 Private components As System.ComponentModel.IContainer "注意:以下过程是 Windows 窗体设计器所必需的 "可以使用 Windows 窗体设计器修改此过程。 "不要使用代码编辑器修改它。 Friend WithEvents NotifyIcon1 As System.Windows.Forms.NotifyIcon "创建一个NotifyIcon实例 Friend TrayIcon = New Icon ( "Tray.ico" ) "创建一个Icon实例 <System.Diagnostics.DebuggerStepThrough ( ) > Private Sub InitializeComponent ( ) Me.components = New System.ComponentModel.Container ( ) Me.NotifyIcon1 = New System.Windows.Forms.NotifyIcon ( Me.components ) Me.NotifyIcon1.Text = "NotifyIcon1" Me.NotifyIcon1.Visible = True "对NotifyIcon实例的Icon属性赋值,完成简单托盘程序 Me.NotifyIcon1.Icon = TrayIcon Me.AutoScaleBaseSize = New System.Drawing.Size ( 6 , 14 ) Me.ClientSize = New System.Drawing.Size ( 292 , 273 ) Me.Name = "Form1" Me.Text = "Form1" End Sub #End Region End Class "启动程序 Module Module1 Sub Main ( ) Application.Run ( new Form1 ( ) ) End sub End Module但是这个托盘程序还不是真正意义上的托盘程序,因为它还有很多具体功能没有实现,下面就列出这些功能,并介绍具体的实现方法(1).托盘程序是隐藏窗口后,程序不应该显示在任务栏中,并且一般运行后都不显示窗口:这是通过设定窗体的属性来完成的,具体如下:"设定程序不应该显示在任务栏 Me.ShowInTaskbar = False "设定程序运行后最小化 Me.WindowState = System.Windows.Forms.FormWindowState.Minimized