modSystray.bas
上传用户:yinyu8822
上传日期:2021-04-28
资源大小:79k
文件大小:3k
开发平台:

Visual Basic

  1. Attribute VB_Name = "modSystray"
  2. 'Download by http://www.codefans.net
  3. Option Explicit
  4. Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
  5. Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
  6. Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
  7.    ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  8. Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  9. Private Const WM_MOUSEMOVE = &H200
  10. Private Const WM_LBUTTONDOWN = &H201
  11. Private Const WM_LBUTTONUP = &H202
  12. Private Const WM_LBUTTONDBLCLK = &H203
  13. Private Const WM_RBUTTONDOWN = &H204
  14. Private Const WM_RBUTTONUP = &H205
  15. Private Const WM_RBUTTONDBLCLK = &H206
  16. Private Const WM_MBUTTONDOWN = &H207
  17. Private Const WM_MBUTTONUP = &H208
  18. Private Const WM_MBUTTONDBLCLK = &H209
  19. Public Const WM_ACTIVATEAPP = &H1C
  20. Public Const NIF_ICON = &H2
  21. Public Const NIF_MESSAGE = &H1
  22. Public Const NIF_TIP = &H4
  23. Public Const NIM_ADD = &H0
  24. Public Const NIM_DELETE = &H2
  25. Public Const MAX_TOOLTIP As Integer = 64
  26. Public Const GWL_WNDPROC = (-4)
  27. Type NOTIFYICONDATA
  28.    cbSize As Long
  29.    hwnd As Long
  30.    uID As Long
  31.    uFlags As Long
  32.    uCallbackMessage As Long
  33.    hIcon As Long
  34.    szTip As String * MAX_TOOLTIP
  35. End Type
  36. Public nfIconData As NOTIFYICONDATA
  37. Private FHandle As Long
  38. Private WndProc As Long
  39. Private Hooking As Boolean
  40. Public Sub AddIconToTray(MeHwnd As Long, MeIcon As Long, MeIconHandle As Long, Tip As String)
  41. With nfIconData
  42.    .hwnd = MeHwnd
  43.    .uID = MeIcon
  44.    .uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
  45.    .uCallbackMessage = WM_RBUTTONUP
  46.    .hIcon = MeIconHandle
  47.    .szTip = Tip & Chr$(0)
  48.    .cbSize = Len(nfIconData)
  49. End With
  50. Shell_NotifyIcon NIM_ADD, nfIconData
  51. End Sub
  52. Public Sub RemoveIconFromTray()
  53. Shell_NotifyIcon NIM_DELETE, nfIconData
  54. End Sub
  55. Public Sub Hook(Lwnd As Long)
  56. If Hooking = False Then
  57.    FHandle = Lwnd
  58.    WndProc = SetWindowLong(Lwnd, GWL_WNDPROC, AddressOf WindowProc)
  59.    Hooking = True
  60. End If
  61. End Sub
  62. Public Sub Unhook()
  63. If Hooking = True Then
  64.    SetWindowLong FHandle, GWL_WNDPROC, WndProc
  65.    Hooking = False
  66. End If
  67. End Sub
  68. Public Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  69. If Hooking = True Then
  70.     If uMsg = 517 And lParam = 515 Then
  71.        frmMain.SysTray
  72.        WindowProc = True
  73.        Exit Function
  74.     ElseIf uMsg = 517 And lParam = 516 Then
  75.        frmMain.SysTray2
  76.        WindowProc = True
  77.        Exit Function
  78.     End If
  79.     
  80.     WindowProc = CallWindowProc(WndProc, hw, uMsg, wParam, lParam)
  81. End If
  82. End Function