我的老天,我又要 COPY/PASTE 了!
这个问题已经有人问过多次,可能搜索起来太困难,把我的代码关键部分贴出来吧:Windows 相关 API 声明:Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
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 g_lPrevProc As LongPublic Const WM_SYSTRAYMESSAGE = WM_USER + 1975FORM 初始化:Private Sub Form_Load()
g_lPrevProc = SetWindowLong(frmMain.hwnd, GWL_WNDPROC, AddressOf WindowProc)
End SubWindowProc:Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
if uMsg = WM_SYSTRAYMESSAGE Then
If lParam = WM_LBUTTONUP Then
DeleteSysTrayIcon hwnd
frmMain.WindowState = vbNormal
frmMain.Show
ElseIf lParam = WM_RBUTTONUP Then
SetForegroundWindow frmMain.hwnd
frmMain.PopupMenu frmMain.mnuPopup
ElseIf lParam = WM_MOUSEMOVE Then
If Not g_bMouseMove Then
g_bMouseMove = True
g_strTipText = Format$(Now, "mm/dd/yyyy hh:nn:ss")
ModifySysTrayTip frmMain.hwnd, g_strTipText
End If
End If
Else
WindowProc = CallWindowProc(g_lPrevProc, hwnd, uMsg, wParam, lParam)
End If
End FunctionSYSTRAY 函数:Public Sub ModifySysTrayTip(hwnd As Long, strTipText As String)
Dim stNotify As NOTIFYICONDATA
With stNotify
.cbSize = Len(stNotify)
.hwnd = hwnd
.szTip = strTipText & vbNullChar
.uFlags = NIF_TIP
End With
Call Shell_NotifyIcon(NIM_MODIFY, stNotify)
End SubPublic Sub AddSysTrayIcon(hwnd As Long, hIcon As Long, strTipText As String)
Dim stNotify As NOTIFYICONDATA
With stNotify
.cbSize = Len(stNotify)
.hIcon = hIcon
.hwnd = hwnd
.szTip = strTipText & vbNullChar
.uCallbackMessage = WM_SYSTRAYMESSAGE
.uFlags = NIF_ICON + NIF_TIP + NIF_MESSAGE
End With
Call Shell_NotifyIcon(NIM_ADD, stNotify)
End SubPublic Sub DeleteSysTrayIcon(hwnd As Long)
Dim stNotify As NOTIFYICONDATA
With stNotify
.cbSize = Len(stNotify)
.hwnd = hwnd
End With
Call Shell_NotifyIcon(NIM_DELETE, stNotify)
End Sub仅供参考。
这个问题已经有人问过多次,可能搜索起来太困难,把我的代码关键部分贴出来吧:Windows 相关 API 声明:Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
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 g_lPrevProc As LongPublic Const WM_SYSTRAYMESSAGE = WM_USER + 1975FORM 初始化:Private Sub Form_Load()
g_lPrevProc = SetWindowLong(frmMain.hwnd, GWL_WNDPROC, AddressOf WindowProc)
End SubWindowProc:Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
if uMsg = WM_SYSTRAYMESSAGE Then
If lParam = WM_LBUTTONUP Then
DeleteSysTrayIcon hwnd
frmMain.WindowState = vbNormal
frmMain.Show
ElseIf lParam = WM_RBUTTONUP Then
SetForegroundWindow frmMain.hwnd
frmMain.PopupMenu frmMain.mnuPopup
ElseIf lParam = WM_MOUSEMOVE Then
If Not g_bMouseMove Then
g_bMouseMove = True
g_strTipText = Format$(Now, "mm/dd/yyyy hh:nn:ss")
ModifySysTrayTip frmMain.hwnd, g_strTipText
End If
End If
Else
WindowProc = CallWindowProc(g_lPrevProc, hwnd, uMsg, wParam, lParam)
End If
End FunctionSYSTRAY 函数:Public Sub ModifySysTrayTip(hwnd As Long, strTipText As String)
Dim stNotify As NOTIFYICONDATA
With stNotify
.cbSize = Len(stNotify)
.hwnd = hwnd
.szTip = strTipText & vbNullChar
.uFlags = NIF_TIP
End With
Call Shell_NotifyIcon(NIM_MODIFY, stNotify)
End SubPublic Sub AddSysTrayIcon(hwnd As Long, hIcon As Long, strTipText As String)
Dim stNotify As NOTIFYICONDATA
With stNotify
.cbSize = Len(stNotify)
.hIcon = hIcon
.hwnd = hwnd
.szTip = strTipText & vbNullChar
.uCallbackMessage = WM_SYSTRAYMESSAGE
.uFlags = NIF_ICON + NIF_TIP + NIF_MESSAGE
End With
Call Shell_NotifyIcon(NIM_ADD, stNotify)
End SubPublic Sub DeleteSysTrayIcon(hwnd As Long)
Dim stNotify As NOTIFYICONDATA
With stNotify
.cbSize = Len(stNotify)
.hwnd = hwnd
End With
Call Shell_NotifyIcon(NIM_DELETE, stNotify)
End Sub仅供参考。
解决方案 »
- 在VBIDE中如何让自订CommandBarButton在执行期间(RunTime)保持Enabled状态?
- 引用数据库问题
- 急急急!!!各位大虾,怎样在vb中修改word中的书签的颜色?
- commandbutton的透明属性是什么
- 打包出錯怎樣解決﹖
- 用vb监视cpu的使用情况!变态老板要!300分送!
- 紧急求助 我需要一个INI配置文件
- 求救,关于vb复制文件,在线等,因为我已没有积分,所以该问题不能给分,谢谢!
- (爱情=痛苦)=true ?
- ?虚拟键盘的问题?急死我了!!!!
- 如何从一副大的bmp图象中提取小的bmp图象(不规则)?
- 如何在VB中真正删除Foxfro的DBF文件记录? (很急!很急急!很急!很急!)
哈哈,你一copy&paste,就又可以有200分啦:)
可是我,就连一个小小的例子都得凭记忆还得用手一个一个字打出来,还不能试,真是累呀 @@