VB最小化到通知栏,托盘 的方法 WinAPI实现
2016-12-07 19:06
483 查看
直接复制代码稍微修改一下就可以用了
1模块代码
Option Explicit Public Const DefaultIconIndex = 1 '图标缺省索引 Public Const WM_LBUTTONDOWN = &H201 '按鼠标左键 Public Const WM_RBUTTONDOWN = &H204 '按鼠标右键 Public Const NIM_ADD = 0 '添加图标 Public Const NIM_MODIFY = 1 '修改图标 Public Const NIM_DELETE = 2 '删除图标 Public Const NIF_MESSAGE = 1 'message 有效 Public Const NIF_ICON = 2 '图标操作(添加,修改,删除)有效 Public Const NIF_TIP = 4 ' ToolTip(提示)有效 'API Declare '图标操作 Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long '判断窗口是否最小化 Public Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long '如果是最小化,返回值>0 '设置窗口位置和状态的功能 Public 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 '定义类型 '通知栏图标状态 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 Function Icon_Add(iHwnd As Long, sTips As String, hIcon As Long, IconID As Long) As Long Dim IconVa As NOTIFYICONDATA With IconVa .hwnd = iHwnd .szTip = sTips + Chr$(0) .hIcon = hIcon .uID = IconID .uCallbackMessage = WM_LBUTTONDOWN .cbSize = Len(IconVa) .uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP Icon_Add = Shell_NotifyIcon(NIM_ADD, IconVa) End With End Function '删除通知栏图标 Public Function Icon_Del(iHwnd As Long, lIndex As Long) As Long Dim IconVa As NOTIFYICONDATA Dim L As Long With IconVa .hwnd = iHwnd .uID = lIndex .cbSize = Len(IconVa) End With Icon_Del = Shell_NotifyIcon(NIM_DELETE, IconVa) End Function '修改通知栏图标 Public Function Icon_Modify(iHwnd As Long, sTips As String, hIcon As Long, IconID As Long) As Long Dim IconVa As NOTIFYICONDATA With IconVa .hwnd = iHwnd .szTip = sTips + Chr$(0) .hIcon = hIcon .uID = IconID .uCallbackMessage = WM_LBUTTONDOWN .cbSize = Len(IconVa) .uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP Icon_Modify = Shell_NotifyIcon(NIM_MODIFY, IconVa) End With End Function
2窗体代码
Option Explicit Dim MinFlag As Boolean Private Sub Form_Load() MinFlag = False End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim L L = X \ 15 If L = WM_RBUTTONDOWN Then Me.PopupMenu m_Main ElseIf L = WM_LBUTTONDOWN Then Call Icon_Modify(Form1.hwnd, Form1.Caption, LoadPicture("F:\图片\ico\1.ico"), 0) End If End Sub Private Sub Form_Resize() If IsIconic(Me.hwnd) > 0 And MinFlag = False Then '如果最小化 MinFlag = True Me.Visible = False Call Icon_Add(Me.hwnd, Me.Caption, Me.Icon, 0) Me.WindowState = vbNormal End If End Sub Private Sub m_Menu_Click(Index As Integer) Select Case Index Case 0: Call Icon_Del(Form1.hwnd, 0) Form1.Show MinFlag = False Exit Sub Case 1: Call Icon_Del(Form1.hwnd, 0) End End Select End Sub
相关文章推荐
- WinForm实现最小化到系统托盘方法实例详解
- 最小化托盘的实现方法
- wxpython 最小化到托盘与欢迎图片的实现方法
- 最小化托盘的实现方法
- C#实现系统托盘通知的方法
- WinForm最小化到系统托盘后,再次激活需要验证的实现方法
- WinForm实现最小化到系统托盘方法实例详解
- wxpython 最小化到托盘与欢迎图片的实现方法
- VB.net 在一个From 关闭后切换到另一From 实现方法,并加载XP视觉样式
- 利用DataSet的Fill方法实现DataList的分页技术(vb.net)
- VB.NET中实现控件数组的方法
- VC6.0 中如何实现最小化到托盘以及恢复?
- C#怎样才能实现窗体最小化到托盘呢?
- C#怎样才能实现窗体最小化到托盘呢?
- vc中程序最小化到托盘(任务拦)的实现
- 在VB、VBA中实现延时(等待)的几种方法
- VB中利用API函数实现特殊窗体的两种方法
- 系统 : 用VB实现窗口图标最小化到系统托盘
- VB 中遍历目录,遍历目录查找文件的2个实现方法
- VC实现最小化后在系统托盘显示_转http://k1983.blog.sohu.com/47997964.html