Windows API 提供了能够添加、 修改,和删除系统任务栏或任务栏通知区域,在 Windows 95、 Windows 98、 Windows Me、 Windows NT 4.0 和 Windows 2000 外壳程序中可用的图标。可以使用仅导出由 Shell32.dll Shell_NotifyIcon 函数提供此功能。此 API 函数还提供了可以指定当用户将鼠标指针暂停在图标上时显示的工具提示的文本字符串。在这篇文章中逐步骤的示例创建一个 Visual Basic 程序,它说明如何使用此 API 函数。
如果单击该图标在任务栏通知区域中的执行某些操作能力取决于回调函数。由于 Visual Basic 4.0 不直接支持回调函数,则没有要显示窗体或执行某些代码使用仅 Visual Basic 4.0 方法。在 Visual Basic 5.0 中 (及更高版本) 添加了此功能,在添加了 AddressOf 运算符。多个选项是可以提供包括邮件冲击波 OCX,这篇文章或回叫 OLE 服务器的详细说明了
高手 Visual Basic 上的罗斯向她提议去共度 McKinney 简介册中的"参考"部分中所述的 Microsoft 系统日记本文章中提到的 OCX 的回叫功能的 Visual Basic 4.0 开发人员可用的。在下列任一选项的详细信息请参阅"参考"部分。因为这些产品不包括 Visual Basic,Microsoft 产品支持服务不支持它们的使用。
下面的示例创建一个窗体的 Visual Basic 项目显示了如何使用 Shell_NotifyIcon API 函数。
分步示例
- 启动 Visual Basic。默认情况下创建 Form1。
- 在窗体的图标属性更改为应显示在任务栏通知区域中的图标。
- 绘制三个 CommandButtons 拖到窗体上。
- 选择从插入菜单将添加到项目中单个代码模块的模块。
- 添加下面的代码函数、 类型,和到模块 1 的常数声明组成:
Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 64
End Type
Global Const NIM_ADD = 0
Global Const NIM_MODIFY = 1
Global Const NIM_DELETE = 2
Global Const NIF_MESSAGE = 1
Global Const NIF_ICON = 2
Global Const NIF_TIP = 4
Declare Function Shell_NotifyIconA Lib "SHELL32" _
(ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Integer
- 下面的代码是带 NOTIFYICONDATA 类型为设置需要的参数的函数,并返回此类型的变量。 向 Form1 中添加:
Private Function setNOTIFYICONDATA(hWnd As Long, ID As Long, _
Flags As Long, CallbackMessage As Long, Icon As Long, _
Tip As String) As NOTIFYICONDATA
Dim nidTemp As NOTIFYICONDATA
nidTemp.cbSize = Len(nidTemp)
nidTemp.hWnd = hWnd
nidTemp.uID = ID
nidTemp.uFlags = Flags
nidTemp.uCallbackMessage = CallbackMessage
nidTemp.hIcon = Icon
nidTemp.szTip = Tip & Chr$(0)
setNOTIFYICONDATA = nidTemp
End Function
- 三个步骤在下面的代码块中调用函数在第 5 步以添加、 修改,和删除任务栏通知区域图标中创建。将此代码还添加到 Form1:
Private Sub Command1_Click()
'Add an icon. This procedure uses the icon specified in
'the Icon property of Form1. This can be modified as desired.
Dim i As Integer
Dim s As String
Dim nid As NOTIFYICONDATA
s = InputBox("Enter string:")
nid = setNOTIFYICONDATA(hWnd:=Form1.hWnd, _
ID:=vbNull, _
Flags:=NIF_MESSAGE Or NIF_ICON _
Or NIF_TIP, _
CallbackMessage:=vbNull, _
Icon:=Form1.Icon, _
Tip:=s)
i = Shell_NotifyIconA(NIM_ADD, nid)
End Sub
Private Sub Command2_Click()
'Modify an existing icon. This procedure uses the icon
'specified in the Icon property of Form1. This can be modified
'as desired.
Dim i As Integer
Dim s As String
Dim nid As NOTIFYICONDATA
s = InputBox("Enter string:")
nid = setNOTIFYICONDATA(hWnd:=Form1.hWnd, _
ID:=vbNull, _
Flags:=NIF_MESSAGE Or NIF_ICON _
Or NIF_TIP, _
CallbackMessage:=vbNull, _
Icon:=Form1.Icon, _
Tip:=s)
i = Shell_NotifyIconA(NIM_MODIFY, nid)
End Sub
Private Sub Command3_Click()
'Delete an existing icon.
Dim i As Integer
Dim nid As NOTIFYICONDATA
nid = setNOTIFYICONDATA(hWnd:=Form1.hWnd, _
ID:=vbNull, _
Flags:=NIF_MESSAGE Or NIF_ICON _
Or NIF_TIP, _
CallbackMessage:=vbNull, _
Icon:=Form1.Icon, _
Tip:="")
i = Shell_NotifyIconA(NIM_DELETE, nid)
End Sub
- 按 F5 键或从运行该应用程序运行菜单中选择开始。单击第一个按钮,然后输入要添加图标的文本字符串。单击要修改一个现有的图标和三个为删除图标第二个按钮。
高手 Visual Basic,罗斯向她提议去共度 McKinney 微软出版社 1995年。
Microsoft Win32 SDK、 Shell_NotifyIcon 和 NOTIFYICONDATA。
Microsoft 系统日志,二月 1996 的可视程序员页 93。
Visual Basic 程序员 1996 年三月的日记问答,页 136。
有关更多的信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
162613
(http://support.microsoft.com/kb/162613/EN-US/
)
如何操作 Visual basic 系统托盘中的图标
文章编号: 149276 - 最后修改: 2004年7月13日 - 修订: 3.1
这篇文章中的信息适用于:
- Microsoft Visual Basic 4.0 标准版
- Microsoft Visual Basic 4.0 专业版
- Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
- Microsoft Visual Basic 5.0 学习版
- Microsoft Visual Basic 6.0 学习版
- Microsoft Visual Basic 5.0 专业版
- Microsoft Visual Basic 6.0 专业版
- Microsoft Visual Basic 5.0 企业版
- Microsoft Visual Basic Enterprise Edition for Windows 6.0
| kbmt kbapi kbhowto KB149276 KbMtzh |
机器翻译注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版:
149276
(http://support.microsoft.com/kb/149276/en-us/
)
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。