VB.NET编写托盘程序
专注于为中小企业提供网站设计、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业秀山土家族苗族免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
托盘程序作为一类特殊的窗体,其快捷图标显示在
系统托盘
中,窗体本身则隐藏不可见。在.NET之前版本的VB中编写托盘程序是十分困难的,但是VB.NET提供的新的NotifyIcon组件却使VB初学者也能轻松编写一个这样的程序:
新建“Windows应用程序”,设置主窗体Opacity属性为0,FormBorderStyle属性为None,ShowInTaskbar属性为
False,这样窗体将在启动后隐藏。在窗体上放置一个NotifyIcon组件NotifyIcon1,一个ContextMenu(弹出菜单)组件
ContextMenu1,并根据需要为ContextMenu1添加菜单项。
设置NotifyIcon1的ICON属性,这个图标就是应用程序出现在系统托盘中的快捷图标;设置NotifyIcon1的Text属性为“VB.NET托盘程序”,这就是鼠标移动到托盘图标时弹出的文字说明;设置NotifyIcon1的ContextMenu属性为ContextMenu1,也就是右键单击快捷图标时的弹出菜单为
ContextMenu1。OK,按F5运行!
几乎不用编写代码,一个托盘程序就这样轻松实现了。
''' 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
任务栏图标就是窗体的ICON属性设置的图标,和标题栏的图标是完全一样的。如果你想做的不一样,那就用无边框窗体,自制一个标题栏