VB.NET編寫托盤程序
專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)秀山土家族苗族免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
托盤程序作為一類特殊的窗體,其快捷圖標(biāo)顯示在
系統(tǒng)托盤
中,窗體本身則隱藏不可見。在.NET之前版本的VB中編寫托盤程序是十分困難的,但是VB.NET提供的新的NotifyIcon組件卻使VB初學(xué)者也能輕松編寫一個(gè)這樣的程序:
新建“Windows應(yīng)用程序”,設(shè)置主窗體Opacity屬性為0,F(xiàn)ormBorderStyle屬性為None,ShowInTaskbar屬性為
False,這樣窗體將在啟動(dòng)后隱藏。在窗體上放置一個(gè)NotifyIcon組件NotifyIcon1,一個(gè)ContextMenu(彈出菜單)組件
ContextMenu1,并根據(jù)需要為ContextMenu1添加菜單項(xiàng)。
設(shè)置NotifyIcon1的ICON屬性,這個(gè)圖標(biāo)就是應(yīng)用程序出現(xiàn)在系統(tǒng)托盤中的快捷圖標(biāo);設(shè)置NotifyIcon1的Text屬性為“VB.NET托盤程序”,這就是鼠標(biāo)移動(dòng)到托盤圖標(biāo)時(shí)彈出的文字說明;設(shè)置NotifyIcon1的ContextMenu屬性為ContextMenu1,也就是右鍵單擊快捷圖標(biāo)時(shí)的彈出菜單為
ContextMenu1。OK,按F5運(yùn)行!
幾乎不用編寫代碼,一個(gè)托盤程序就這樣輕松實(shí)現(xiàn)了。
''' summary
''' Returns an icon for a given file - indicated by the name parameter.
''' /summary
''' param name="name"Pathname for file./param
''' param name="size"Large or small/param
''' param name="linkOverlay"Whether to include the link icon/param
''' returnsSystem.Drawing.Icon/returns
Public Shared Function GetFileIcon(ByVal name As String, ByVal size As IconSize, ByVal linkOverlay As Boolean) As System.Drawing.Icon
Dim shfi As New Shell32.SHFILEINFO()
Dim flags As UInteger = Shell32.SHGFI_ICON Or Shell32.SHGFI_USEFILEATTRIBUTES
If True = linkOverlay Then
flags += Shell32.SHGFI_LINKOVERLAY
End If
' Check the size specified for return.
If IconSize.Small = size Then
flags += Shell32.SHGFI_SMALLICON
Else
flags += Shell32.SHGFI_LARGEICON
End If
Shell32.SHGetFileInfo(name, Shell32.FILE_ATTRIBUTE_NORMAL, shfi, CInt(System.Runtime.InteropServices.Marshal.SizeOf(shfi)), flags)
' Copy (clone) the returned icon to a new object, thus allowing us to clean-up properly
Dim icon As System.Drawing.Icon = DirectCast(System.Drawing.Icon.FromHandle(shfi.hIcon).Clone(), System.Drawing.Icon)
User32.DestroyIcon(shfi.hIcon)
' Cleanup
Return icon
end function
任務(wù)欄圖標(biāo)就是窗體的ICON屬性設(shè)置的圖標(biāo),和標(biāo)題欄的圖標(biāo)是完全一樣的。如果你想做的不一樣,那就用無邊框窗體,自制一個(gè)標(biāo)題欄