當前位置:編程學習大全網 - 編程語言 - vb編程程序最小化到托盤後,過壹會兒後自動激活到桌面,如何使它在桌面做上層

vb編程程序最小化到托盤後,過壹會兒後自動激活到桌面,如何使它在桌面做上層

Option Explicit

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分鐘,妳可以根據自己需要去改壹下

  • 上一篇:數據庫有哪幾種
  • 下一篇:2020年貴州省法律職業資格考試公告
  • copyright 2024編程學習大全網