加个模块:
代码如下
Option Explicit
Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONUP = &H205
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIF_MESSAGE = &H1
Public Const NIM_DELETE = &H2
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const WM_MOUSEMOVE = &H200
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
End Type
Public TrayIcon As NOTIFYICONDATA使用:
On Error GoTo err
TrayIcon.cbSize = Len(TrayIcon)
TrayIcon.hWnd = Me.hWnd
TrayIcon.uId = vbNull
TrayIcon.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
TrayIcon.ucallbackMessage = WM_MOUSEMOVE
TrayIcon.hIcon = imgIcon1.Picture
TrayIcon.szTip = "你的程序" & Chr$(0)
Call Shell_NotifyIcon(NIM_ADD, TrayIcon)
App.TaskVisible = False
err:在resize时间中检测窗体的状态。要是最下化就调用上面的代码。
代码如下
Option Explicit
Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONUP = &H205
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIF_MESSAGE = &H1
Public Const NIM_DELETE = &H2
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const WM_MOUSEMOVE = &H200
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
End Type
Public TrayIcon As NOTIFYICONDATA使用:
On Error GoTo err
TrayIcon.cbSize = Len(TrayIcon)
TrayIcon.hWnd = Me.hWnd
TrayIcon.uId = vbNull
TrayIcon.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
TrayIcon.ucallbackMessage = WM_MOUSEMOVE
TrayIcon.hIcon = imgIcon1.Picture
TrayIcon.szTip = "你的程序" & Chr$(0)
Call Shell_NotifyIcon(NIM_ADD, TrayIcon)
App.TaskVisible = False
err:在resize时间中检测窗体的状态。要是最下化就调用上面的代码。
我的是[email protected]
我直接发完整代码给你。
to pp616(平平) 谢谢!我试一试,有问题还要想你请教!
我也查过以前的帖子,但是都只是在Tray中创建了图标,当窗口最小化时,还是在Taskbar上。
要不让他在Taskbar上到底要怎么做?
麻烦你仔细想想!
图标的事件触发时
form.windowstate = 0
form.show
If Me.WindowState = 1 Then Me.Hide
End Sub
在最小化的时候隐藏窗体不就行了!
不要老是想着API哦!
在最小化的时候隐藏窗体就行了,
这种程序我做的也多了,没有一次是不行的,但响应托盘的时间的方法跟你不一样
你可以试试下面的代码:添加图标With ShowIcon
.cbSize = Len(ShowIcon)
.hIcon = Me.Icon
.hwnd = Me.hwnd
.szTip = "myTray" & vbNullChar
.uCallbackMessage = WM_MOUSEMOVE
.uFlags = NIF_MESSAGE Or NIF_TIP Or NIF_ICON
.uID = 1
End With
Shell_NotifyIcon NIM_ADD, ShowIcon
响应事件:Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If X = WM_LBUTTONDBLCLK Then ’双击左键时
你要做的事情
。
。
ElseIf X = WM_RBUTTONUP Then ‘右键松开时
你要做的事情
。
。
End If
End Sub
先谢谢了,我也是想着form.hide
但是,在
If TheForm.WindowState = vbMinimized Then _
'恢复到最小化前的窗体状态
TheForm.WindowState = TheForm.LastState
TheForm.SetFocus '在这一句出错了!!!!!
我在前面加了form.show
也还是不行!
我也懒得用,不知道有没有参考价值。