http://www.fantasiasoft.net/Zyl910/SysTray1.zip 系统托盘编程大全 For VB 作者:zyl910这个程序包括了所有的托盘程序设计技巧: 1.托盘菜单可以消去 2.Explorer非法操作后能自动恢复图标 3.气泡提示 4.托盘图标的隐藏
给你一个我收集的例子: 在模块中: Option Explicit Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias _ "Shell_NotifyIconA" (ByVal dwMessage As Long, _ lpData As NOTIFYICONDATA) As LongPublic 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 '由于VB中没有Union类型,只能用Long型代替 szInfoTitle As String * 64 dwInfoFlags As Long End Type
Public Const NOTIFYICON_VERSION = 3 Public Const NOTIFYICON_OLDVERSION = 0Public Const NIM_ADD = &H0 Public Const NIM_MODIFY = &H1 Public Const NIM_DELETE = &H2Public Const NIM_SETFOCUS = &H3 Public Const NIM_SETVERSION = &H4
Public Const NIF_MESSAGE = &H1 Public Const NIF_ICON = &H2 Public Const NIF_TIP = &H4Public Const NIF_STATE = &H8 Public Const NIF_INFO = &H10
Public Const NIS_HIDDEN = &H1 Public Const NIS_SHAREDICON = &H2 Public Const NIIF_NONE = &H0 Public Const NIIF_WARNING = &H2 Public Const NIIF_ERROR = &H3 Public Const NIIF_INFO = &H1Public nfIconData As NOTIFYICONDATA 在窗体中: Option ExplicitPrivate Sub Form_Load() With nfIconData .cbSize = Len(nfIconData) .hwnd = Me.hwnd .uId = vbNull .uFlags = NIF_INFO Or NIF_ICON Or NIF_TIP Or NIF_MESSAGE .hIcon = Me.Icon .szTip = "你的小消息可以放在此..." & vbNullChar .dwState = 0 .dwStateMask = 0 .szInfo = "这是一个Balloon Style Tool-tip!又一个小技巧可以应用了 " & Chr(13) & ":)" & vbNullChar .uTimeoutOrVersion = 15000 .szInfoTitle = "哈哈,看到了么" & vbNullChar .dwInfoFlags = NIIF_INFO End With Call Shell_NotifyIcon(NIM_ADD, nfIconData) End Sub Private Sub Form_Unload(Cancel As Integer) Call Shell_NotifyIcon(NIM_DELETE, nfIconData) End End Sub
'在模块中定义 Public 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 TypePublic Const WM_LBUTTONDOWN = &H201 Public Const WM_LBUTTONDBLCLK = &H203 Public Const WM_RBUTTONUP = &H205 Public Const NIM_ADD = &H0 Public Const NIM_MODIFY = &H1 Public Const NIF_MESSAGE = &H1 Public Const NIM_DELETE = &H2 Public Const NIF_ICON = &H2 Public Const NIF_TIP = &H4 Public Const WM_MOUSEMOVE = &H200Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean Public Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long'在窗口中定义 Private Sub Form_Load() TrayIcon.cbSize = Len(TrayIcon) TrayIcon.hWnd = hWnd TrayIcon.uId = vbNull TrayIcon.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE TrayIcon.ucallbackMessage = WM_MOUSEMOVE TrayIcon.hIcon = Me.Icon TrayIcon.szTip = ls_Caption(50, li_Language) & Chr(0)
'在系统栏添加拖盘 Call Shell_NotifyIcon(NIM_ADD, TrayIcon) End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) '构造系统拖盘结构 TrayIcon.cbSize = Len(TrayIcon) TrayIcon.hWnd = Me.hWnd TrayIcon.uId = vbNull
'删除系统栏的拖盘 Call Shell_NotifyIcon(NIM_DELETE, TrayIcon) Unload frmRight Unload frmDown End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error Resume Next Dim Message As Long
Message = X / Screen.TwipsPerPixelX '判断鼠标消息,执行不同的功能 Select Case Message Case WM_LBUTTONDOWN frmDown.Timer1.Enabled = frmDown.lb_FlagV frmMain.Show frmRight.Show frmDown.Show frmMain.WindowState = vbNormal SetForegroundWindow frmMain.hWnd Case WM_RBUTTONUP SetForegroundWindow frmMain.hWnd 'PopupMenu mnuPopup End Select End Sub
系统托盘编程大全 For VB
作者:zyl910这个程序包括了所有的托盘程序设计技巧:
1.托盘菜单可以消去
2.Explorer非法操作后能自动恢复图标
3.气泡提示
4.托盘图标的隐藏
在模块中:
Option Explicit
Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias _
"Shell_NotifyIconA" (ByVal dwMessage As Long, _
lpData As NOTIFYICONDATA) As LongPublic 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 '由于VB中没有Union类型,只能用Long型代替
szInfoTitle As String * 64
dwInfoFlags As Long
End Type
Public Const NOTIFYICON_VERSION = 3
Public Const NOTIFYICON_OLDVERSION = 0Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2Public Const NIM_SETFOCUS = &H3
Public Const NIM_SETVERSION = &H4
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4Public Const NIF_STATE = &H8
Public Const NIF_INFO = &H10
Public Const NIS_HIDDEN = &H1
Public Const NIS_SHAREDICON = &H2
Public Const NIIF_NONE = &H0
Public Const NIIF_WARNING = &H2
Public Const NIIF_ERROR = &H3
Public Const NIIF_INFO = &H1Public nfIconData As NOTIFYICONDATA
在窗体中:
Option ExplicitPrivate Sub Form_Load()
With nfIconData
.cbSize = Len(nfIconData)
.hwnd = Me.hwnd
.uId = vbNull
.uFlags = NIF_INFO Or NIF_ICON Or NIF_TIP Or NIF_MESSAGE
.hIcon = Me.Icon
.szTip = "你的小消息可以放在此..." & vbNullChar
.dwState = 0
.dwStateMask = 0
.szInfo = "这是一个Balloon Style Tool-tip!又一个小技巧可以应用了 " & Chr(13) & ":)" & vbNullChar
.uTimeoutOrVersion = 15000
.szInfoTitle = "哈哈,看到了么" & vbNullChar
.dwInfoFlags = NIIF_INFO
End With Call Shell_NotifyIcon(NIM_ADD, nfIconData)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call Shell_NotifyIcon(NIM_DELETE, nfIconData)
End
End Sub
Public 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 TypePublic Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONUP = &H205
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIF_MESSAGE = &H1
Public Const NIM_DELETE = &H2
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const WM_MOUSEMOVE = &H200Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Public Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long'在窗口中定义
Private Sub Form_Load()
TrayIcon.cbSize = Len(TrayIcon)
TrayIcon.hWnd = hWnd
TrayIcon.uId = vbNull
TrayIcon.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
TrayIcon.ucallbackMessage = WM_MOUSEMOVE
TrayIcon.hIcon = Me.Icon
TrayIcon.szTip = ls_Caption(50, li_Language) & Chr(0)
'在系统栏添加拖盘
Call Shell_NotifyIcon(NIM_ADD, TrayIcon)
End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'构造系统拖盘结构
TrayIcon.cbSize = Len(TrayIcon)
TrayIcon.hWnd = Me.hWnd
TrayIcon.uId = vbNull
'删除系统栏的拖盘
Call Shell_NotifyIcon(NIM_DELETE, TrayIcon)
Unload frmRight
Unload frmDown
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Error Resume Next
Dim Message As Long
Message = X / Screen.TwipsPerPixelX '判断鼠标消息,执行不同的功能
Select Case Message
Case WM_LBUTTONDOWN
frmDown.Timer1.Enabled = frmDown.lb_FlagV
frmMain.Show
frmRight.Show
frmDown.Show
frmMain.WindowState = vbNormal
SetForegroundWindow frmMain.hWnd
Case WM_RBUTTONUP
SetForegroundWindow frmMain.hWnd
'PopupMenu mnuPopup
End Select
End Sub