Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const NIM_ADD = &H0 '在任務欄中增加壹個圖標
Private Const NIM_DELETE = &H2 '刪除任務欄中的壹個圖標
Private Const NIM_MODIFY = &H1 '修改任務欄中個圖標信息
Private Const WM_MOUSEMOVE = &H200 '在圖標上移動鼠標
Private Const WM_LBUTTONDOWN = &H201 '鼠標左鍵按下
Private Const WM_LBUTTONUP = &H202 '鼠標左鍵釋放
Private Const HWND_TOPMOST = -1
Private Const SWP_SHOWWINDOW = &H40
Private Type NOTIFYICONDATA
cbSize As Long '該數據結構的大小
hwnd As Long '處理任務欄中圖標的窗口句柄
uId As Long '定義的任務欄中圖標的標識
uFlags As Long '任務欄圖標功能控制,可以是以下值的組合(壹般全包括)
ucallbackMessage As Long '任務欄圖標通過它與用戶程序交換消息,處理該消息的窗口由hWnd決定
hIcon As Long '任務欄中的圖標的控制句柄
szTip As String * 64 '圖標的提示信息
End Type
Private Const NIF_MESSAGE = &H1 'NIF_MESSAGE 表示發送控制消息;
Private Const NIF_ICON = &H2 'NIF_ICON表示顯示控制欄中的圖標;
Private Const NIF_TIP = &H4 'NIF_TIP表示任務欄中的圖標有動態提示。
Private restoreTime As Date
Dim myData1 As NOTIFYICONDATA
Private Sub Form_Load()
With myData1
.cbSize = Len(myData1)
.hwnd = Me.hwnd
.uId = 0
.uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
.ucallbackMessage = WM_MOUSEMOVE
.hIcon = Me.Icon.Handle
.szTip = "托盤程序測試!" & vbNullChar
End With
Shell_NotifyIcon NIM_ADD, myData1
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim Message As Long
Message = x / Screen.TwipsPerPixelX
Select Case Message
Case WM_LBUTTONUP
If Me.WindowState = vbMinimized Then
Me.WindowState = vbNormal
Me.Show
End If
End Select
End Sub
Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then
Timer1.Interval = 1000
restoreTime = DateAdd("n", 1, Now)
Me.Hide
End If
End Sub
Private Sub Timer1_Timer()
If DateDiff("n", restoreTime, Now) = 0 Then
Me.WindowState = vbNormal
Me.Show
Me.ScaleMode = 3
SetWindowPos Me.hwnd, HWND_TOPMOST, Me.ScaleLeft, Me.ScaleTop, Me.ScaleWidth, Me.ScaleHeight, SWP_SHOWWINDOW
End If
End Sub
'添加壹個timer控件,最小化以後看效果,我這裏定時是1分鐘,妳可以根據自己需要去改壹下