Private 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
Private Const NIM_ADD = &H0
Private Const NIM_DELETE = &H2
Private Const WM_MOUSEMOVE = &H200
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Declare Function Shell_NotifyIcon Lib "shell32" _ Alias "Shell_NotifyIconA" _
(ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As BooleanPrivate Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205Dim t As NOTIFYICONDATA
Dim Flag As Integer 'Flag为一开关,使得窗体第一次加载时,不被最小化。.Private Sub Form_Load()
Flag = 1
End SubPrivate Sub Form_Resize()
If Me.WindowState = 1 Then
If Flag <> 1 Then
Me.Hide
End If
t.cbSize = Len(t)
t.hWnd = Picture1.hWnd
t.uId = 1&
t.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
t.ucallbackMessage = WM_MOUSEMOVE
t.hIcon = Picture1.Picture
t.szTip = "Click me to maximize..." & Chr$(0)
Shell_NotifyIcon NIM_ADD, t
Else
Flag = 2
End If
End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X _
As Single, Y As Single)
If Me.WindowState <> vbMinimized Then
Exit Sub
End If
Dim lX As Long
' VB manipulates the x value according to scale mode:
' we must remove this before we can interpret the
' message windows was trying to send to us:
lX = ScaleX(x, Me.ScaleMode, vbPixels)
Select Case lX
Case WM_MOUSEMOVE
'
Case WM_LBUTTONDOWN t.cbSize = Len(t)
t.hWnd = Picture1.hWnd
t.uFlags = NIF_ICON
t.uId = 1&
Shell_NotifyIcon NIM_DELETE, t
Me.WindowState = vbNormal
Me.Show
Case WM_LBUTTONUP
'
Case WM_LBUTTONDBLCLK
'
Case WM_RBUTTONDOWN
'
Case WM_RBUTTONUP
'
Case WM_RBUTTONDBLCLK
'
End Select
End Sub
cbSize As Long
hWnd As Long
uId As Long
uFlags As Long
ucallbackMessage As Long
hIcon As Long
szTip As String * 64
End Type
Private Const NIM_ADD = &H0
Private Const NIM_DELETE = &H2
Private Const WM_MOUSEMOVE = &H200
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Declare Function Shell_NotifyIcon Lib "shell32" _ Alias "Shell_NotifyIconA" _
(ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As BooleanPrivate Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205Dim t As NOTIFYICONDATA
Dim Flag As Integer 'Flag为一开关,使得窗体第一次加载时,不被最小化。.Private Sub Form_Load()
Flag = 1
End SubPrivate Sub Form_Resize()
If Me.WindowState = 1 Then
If Flag <> 1 Then
Me.Hide
End If
t.cbSize = Len(t)
t.hWnd = Picture1.hWnd
t.uId = 1&
t.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
t.ucallbackMessage = WM_MOUSEMOVE
t.hIcon = Picture1.Picture
t.szTip = "Click me to maximize..." & Chr$(0)
Shell_NotifyIcon NIM_ADD, t
Else
Flag = 2
End If
End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X _
As Single, Y As Single)
If Me.WindowState <> vbMinimized Then
Exit Sub
End If
Dim lX As Long
' VB manipulates the x value according to scale mode:
' we must remove this before we can interpret the
' message windows was trying to send to us:
lX = ScaleX(x, Me.ScaleMode, vbPixels)
Select Case lX
Case WM_MOUSEMOVE
'
Case WM_LBUTTONDOWN t.cbSize = Len(t)
t.hWnd = Picture1.hWnd
t.uFlags = NIF_ICON
t.uId = 1&
Shell_NotifyIcon NIM_DELETE, t
Me.WindowState = vbNormal
Me.Show
Case WM_LBUTTONUP
'
Case WM_LBUTTONDBLCLK
'
Case WM_RBUTTONDOWN
'
Case WM_RBUTTONUP
'
Case WM_RBUTTONDBLCLK
'
End Select
End Sub
回去后在试一下.