系统栏图标

  1. API 函数
  2. 数据结构
  3. 回调消息结构

Shell_NotifyIcon 函数

显示、更改、删除 系统栏图标调用此函数。

Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias " Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
参数 意义
dwMessage 显示方式:
Public Const NIM_ADD        As Long = &H0 ' 增加图标
Public Const NIM_DELETE     As Long = &H2 ' 删除图标
Public Const NIM_MODIFY     As Long = &H1 ' 修改图标
Public Const NIM_SETFOCUS   As Long = &H3 ' 
Public Const NIM_SETVERSION As Long = &H4 ' 
lpData NotifyiconData 结构地址

NotifyiconData 结构

版本 Visual Basic 6 Delphi 6
Win98 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
type NOTIFYICONDATA = record
    cbSize: DWORD;
    Wnd             : HWND;
    uID             : UINT;
    uFlags          : UINT;
    uCallbackMessage: UINT;
    hIcon           : HICON;
    szTip: array[0..63] of AnsiChar;
end;
Win2000 Type NOTIFYICONDATA
    cbSize            As Long
    hwnd              As Long
    uId               As Long
    uFlags            As Long
    uCallBackMessage  As Long
    hIcon             As Long
    szTip             As String * 128
    dwState           As Long
    dwStateMask       As Long
    szInfo            As String * 256
    uTimeoutOrVersion As Long
    szInfoTitle       As String * 64
    dwInfoFlags       As Long
End Type
type NOTIFYICONDATA = record
    cbSize            : DWORD;
    Wnd               : HWND;
    uID               : UINT;
    uFlags            : UINT;
    uCallbackMessage  : UINT;
    hIcon             : HICON;
    szTip: array[0..127] of AnsiChar;
    dwState           : DWORD;
    dwStateMask       : DWORD;
    szInfo: array [0..255] of AnsiChar;
    uTimeoutOrVersion : DWORD;
    szInfoTitle: array[0..63] of AnsiChar; 
    dwInfoFlags       : DWORD;
end;
属性 意义
cbSize 结构尺寸,必须设为 Sizeof(TNotifyIconData)
hwnd 图标消息发往的窗体句柄
uID 图标号,多个图标以此区别,自定
uFlags 功能设置:(组合相加)
Public Const NIF_MESSAGE As Long = &H1  ' 发送消息
Public Const NIF_ICON As Long    = &H2  ' 显示图标
Public Const NIF_TIP As Long     = &H4  ' 显示 szTip
Public Const NIF_STATE As Long   = &H8  '
Public Const NIF_INFO As Long    = &H10 ' 显示气球
uCallbackMessage 自定义消息号,必须在窗体中检测此消息
hIcon 图标句柄, 一般取窗体的 Icon.Handle
szTip 鼠标悬停提示文字
dwState 图标状态
Public Const NIS_HIDDEN     = &H1 ' 隐藏图标
Public Const NIS_SHAREDICON = &H2 ' 共享图标
dwStateMask 图标状态掩码
Public Const NIS_HIDDEN     = &H1 ' 隐藏图标
Public Const NIS_SHAREDICON = &H2 ' 共享图标
szInfo 气球提示正文
uTimeoutOrVersion 气球显示时间/版本,复合参数
时间(低位):10000 - 30000 ms
版本(高位):0 for V4, 3 for V5
szInfoTitle 气球提示标题
dwInfoFlags 气球图标类型
Public Const NIIF_NONE    = &H0 ' 无图标
Public Const NIIF_INFO    = &H1 ' "消息"图标
Public Const NIIF_WARNING = &H2 ' "警告"图标
Public Const NIIF_ERROR   = &H3 ' "错误"图标

回调消息

(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long)
参数 意义
hwnd 接收消息的窗体
msg 自定义消息号,同上面的 uCallbackMessage
wParam 图标号,同上面的 uID
lParam lParam 类型

lParam 类型

常量 意义
Public Const WM_MOUSEMOVE     = &H200 鼠标指到图标
Public Const WM_LBUTTONDOWN   = &H201 左键按下
Public Const WM_LBUTTONUP     = &H202 左键放开
Public Const WM_LBUTTONDBLCLK = &H203 左键双击
Public Const WM_RBUTTONDOWN   = &H204 右键按下
Public Const WM_RBUTTONUP     = &H205 右键放开
Public Const WM_RBUTTONDBLCLK = &H206 右键双击