托盤程序是指這樣一類程序:當程序運行後,會在系統的托盤區(也有說是狀態區域)創建此程序的圖標,使用者可以通過點擊圖標出現的菜單來控制程序的運行狀態。托盤程序有很多優點,如不占屏幕,後台運行,便於控制等。所以現在越來越多的程序都做成了托盤程序。在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
(2).定義托盤程序中的菜單和相關事件: