?? systray.bas
字號:
Attribute VB_Name = "Systray"
' **********************************************************************
' 描 述:存vb代碼寫的winnap程序,非???' Play78.com : 網站導航,源碼之家,絕對開源
' 海闊天空收集整理
' 主站地址:http://www.play78.com/
' 源碼下載地址:http://www.play78.com/blog
' 圖片下在地址:http://www.play78.com/pic
' QQ:13355575
' e-mail:hglai@eyou.com
' 編寫日期:2005年08月30日
' **********************************************************************
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
'dwMessage成員,分別為:添加、刪除、更改圖標
Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2
Public Const NIM_MODIFY = &H1
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 '為圖標顯示的工具提示(Tooltip)文本
End Type
'uFlags成員
Public Const NIF_ICON = &H2 '成員hIcon是合法的
Public Const NIF_MESSAGE = &H1 '成員uCallbackMessage是合法的
Public Const NIF_TIP = &H4 '成員szTip是合法的
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'將消息傳給指定的窗口程序
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'改變指定窗口的屬性,并把一個32位值放在窗口附加存儲空間的指定偏移位置。
'nIndex:指定要設置的大于等于0的偏移值。
Public Const GWL_EXSTYLE = (-20) '設置一種新的窗口擴展風格
Public Const GWL_HINSTANCE = (-6) '設置一個新的應用程序事例句柄
Public Const GWL_HWNDPARENT = (-8) '
Public Const GWL_ID = (-12) '設置一個新的窗口標識符
Public Const GWL_STYLE = (-16) '設置一種新的窗口風格
Public Const GWL_USERDATA = (-21) '設置與窗口有關的32位值
'Public Const GWL_WNDPROC = (-4) '為窗口過程設定一個新的地址
'如果hWnd標識的是對話框,則nIndex為下列值:
Public Const DWL_DLGPROC = 4 '設置對話框過程的新地址
Public Const DWL_MSGRESULT = 0 '設置在對話框過程中處理的消息的返回值
Public Const DWL_USER = 8 '應用程序私有的新的額外信息,如句柄指針
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_RBUTTONDBLCLK = &H206
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_USER = &H400
Public Const TRAY_CALLBACK = (WM_USER + 1001&)
Public NOTI As NOTIFYICONDATA
Public preWinProc As Long
Public NewForm As Form
Public NewMenu As Menu
Public Function NewWindone(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If msg = TRAY_CALLBACK Then
If lParam = WM_LBUTTONUP Then
Mainfrm.Show
If Mainfrm.EQFlag = True Then
EQfrm.Show
End If
If Mainfrm.PLFlag = True Then
Listfrm.Show
End If
Mainfrm.ReFlashForm.Enabled = True
End If
If lParam = WM_RBUTTONUP Then
NewForm.PopupMenu NewMenu
End If
End If
NewWindone = CallWindowProc(preWinProc, hwnd, msg, wParam, lParam)
End Function
Public Sub AddTray(Frm As Form, mnu As Menu)
Set NewForm = Frm
Set NewMenu = mnu
'用NewWindone取代原窗口程序
preWinProc = SetWindowLong(Frm.hwnd, GWL_WNDPROC, AddressOf NewWindone)
With NOTI
.uID = 0
.hwnd = Frm.hwnd
.cbSize = Len(NOTI)
.hIcon = Frm.Icon.Handle
.uFlags = NIF_ICON
.uCallbackMessage = TRAY_CALLBACK
.uFlags = .uFlags Or NIF_MESSAGE
.cbSize = Len(NOTI)
End With
Shell_NotifyIcon NIM_ADD, NOTI
End Sub
Public Sub RemoveTray()
NOTI.uFlags = 0
Shell_NotifyIcon NIM_DELETE, NOTI
End Sub
Public Sub SetTrayTip(Tip As String)
With NOTI
.szTip = Tip & vbNullChar
.uFlags = NIF_TIP
End With
Shell_NotifyIcon NIM_MODIFY, NOTI
End Sub
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -