托盤程序是指這樣一類程序:當程序運行后,會在系統(tǒng)的托盤區(qū)(也有說是狀態(tài)區(qū)域)創(chuàng)建此程序的圖標,使用者可以通過點擊圖標出現(xiàn)的菜單來控制程序的運行狀態(tài)。托盤程序有很多優(yōu)點,如不占屏幕,后臺運行,便于控制等。所以現(xiàn)在越來越多的程序都做成了托盤程序。在VB.NET中,編寫托盤程序是比較方便和簡單的。這是因為VB.NET沒有自身類庫,它所使用的類庫是.Net框架中為所有.Net平臺開發(fā)語言提供的公用類庫——.Net FrameWork SDK。在這個類庫中,為編寫托盤程序提供了具體的類,調(diào)用這些類就可以實現(xiàn)程序的托盤效果了。從而也就擺脫了它的前身VB在處理這類問題時候的煩瑣。下面就通過二個具體例子來了解并掌握如何用VB.NET編寫托盤程序。
本文程序的設(shè)計及運行環(huán)境
(1)Windows 2000 Service
(2)Net Framework SDK 正式版
靜態(tài)托盤程序的編寫過程
所謂靜態(tài)托盤程序是指程序運行后,在系統(tǒng)托盤區(qū)的圖標處于靜止狀態(tài)的托盤程序。動態(tài)托盤程序正好與之相反,它是指在系統(tǒng)托盤區(qū)圖標呈現(xiàn)動畫效果的一類托盤程序。下面就來探討一下VB.NET是如何實現(xiàn)靜態(tài)托盤程序。
.Net FrameWork SDK為編寫托盤程序提供了一個組件:NotifyIcon組件。NotifyIcon組件是一個WinForm組件,位于命名空間"System.Windows.Forms"中,在VB.NET程序中,只要創(chuàng)建一個NotifyIcon組件的實例,并且對NotifyIcon實例的"Icon"屬性賦值,這樣一個簡單的托盤程序就完成了。下面就是這個簡單托盤程序?qū)τ诘拇a(Form1.vb):
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows 窗體設(shè)計器生成的代碼 "
Public Sub New ( )
MyBase.New ( )
'該調(diào)用是 Windows 窗體設(shè)計器所必需的。
InitializeComponent ( )
'在 InitializeComponent ( ) 調(diào)用之后添加任何初始化
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 窗體設(shè)計器所必需的
Private components As System.ComponentModel.IContainer
'注意:以下過程是 Windows 窗體設(shè)計器所必需的
'可以使用 Windows 窗體設(shè)計器修改此過程。
'不要使用代碼編輯器修改它。
Friend WithEvents NotifyIcon1 As System.Windows.Forms.NotifyIcon
'創(chuàng)建一個NotifyIcon實例
Friend TrayIcon = New Icon ( "Tray.ico" )
'創(chuàng)建一個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
但是這個托盤程序還不是真正意義上的托盤程序,因為它還有很多具體功能沒有實現(xiàn),下面就列出這些功能,并介紹具體的實現(xiàn)方法
(1).托盤程序是隱藏窗口后,程序不應該顯示在任務欄中,并且一般運行后都不顯示窗口:
這是通過設(shè)定窗體的屬性來完成的,具體如下:
'設(shè)定程序不應該顯示在任務欄
Me.ShowInTaskbar = False
'設(shè)定程序運行后最小化
Me.WindowState = System.Windows.Forms.FormWindowState.Minimized