托盘图标提示

news/2024/7/8 2:31:52

 

托盘图标提示


[ 源文作者yefanqiu,由test发表于2004-10-17 19:19:11]
 
 

 

 
 
 
 

 
窗体代码

'*************************************************************************
'**模 块 名:frmTest
'**说    明:YFsoft 版权所有2004 - 2005(C)
'**创 建 人:叶帆
'**日    期:2004-10-14 09:08:28
'**修 改 人:
'**日    期:
'**描    述:托盘气球提示
'**版    本:V1.0.0
'*************************************************************************
Option Explicit

'*************************************************************************
'**函 数 名:cmdDel_Click
'**输    入:无
'**输    出:无
'**功能描述:删除图标
'**全局变量:
'**调用模块:
'**作    者:叶帆
'**日    期:2004-10-14 09:34:58
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'*************************************************************************
Private Sub cmdDel_Click()
    DelNotifyIcon Me
End Sub

'*************************************************************************
'**函 数 名:cmdShow_Click
'**输    入:无
'**输    出:无
'**功能描述:显示提示
'**全局变量:
'**调用模块:
'**作    者:叶帆
'**日    期:2004-10-14 09:34:44
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'*************************************************************************
Private Sub cmdShow_Click()
    ShowNotifyIcon Me, txtTitle, txtInfo, cmbType.ListIndex
End Sub

'*************************************************************************
'**函 数 名:Form_Load
'**输    入:无
'**输    出:无
'**功能描述:
'**全局变量:
'**调用模块:初始化
'**作    者:叶帆
'**日    期:2004-10-14 09:08:57
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'*************************************************************************
Private Sub Form_Load()
  cmbType.ListIndex = 1    '信息图标
  cmdShow_Click            '显示信息
End Sub
'*************************************************************************
'**函 数 名:Form_Unload
'**输    入:Cancel(Integer) -
'**输    出:无
'**功能描述:结束
'**全局变量:
'**调用模块:
'**作    者:叶帆
'**日    期:2004-10-14 09:35:32
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'*************************************************************************
Private Sub Form_Unload(Cancel As Integer)
       
    '删除图标
    cmdDel_Click
    
    ' 卸载所有窗体
    Dim frm As Form
    For Each frm In Forms
        Unload frm
    Next
End Sub



--------------------------------------------------------------------------------
'模块代码

'*************************************************************************
'**模 块 名:mdlNotifyBase
'**说    明:YFsoft 版权所有2004 - 2005(C)
'**创 建 人:叶帆
'**日    期:2004-10-14 09:17:46
'**修 改 人:
'**日    期:
'**描    述:显示托盘提示模块
'**版    本:V1.0.0
'*************************************************************************
Option Explicit
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_RBUTTONUP = &H205
Private Const WM_USER = &H400
Private Const WM_NOTIFYICON = WM_USER + 1            ' 自定义消息
Private Const WM_LBUTTONDBLCLK = &H203
Private Const GWL_WNDPROC = (-4)
' 关于气球提示的自定义消息, 2000下不产生这些消息
Private Const NIN_BALLOONSHOW = (WM_USER + &H2)      ' 当 Balloon Tips 弹出时执行
Private Const NIN_BALLOONHIDE = (WM_USER + &H3)      ' 当 Balloon Tips 消失时执行(如 SysTrayIcon 被删除),
                                                    ' 但指定的 TimeOut 时间到或鼠标点击 Balloon Tips 后的消失不发送此消息
Private Const NIN_BALLOONTIMEOUT = (WM_USER + &H4)   ' 当 Balloon Tips 的 TimeOut 时间到时执行
Private Const NIN_BALLOONUSERCLICK = (WM_USER + &H5) ' 当鼠标点击 Balloon Tips 时执行。
                                                    ' 注意:在XP下执行时 Balloon Tips 上有个关闭按钮,
                                                    ' 如果鼠标点在按钮上将接收到 NIN_BALLOONTIMEOUT 消息。

Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Private Type NOTIFYICONDATA
    cbSize As Long              ' 结构大小(字节)
    hwnd As Long                ' 处理消息的窗口的句柄
    uId As Long                 ' 唯一的标识符
    uFlags As Long              ' Flags
    uCallBackMessage As Long    ' 处理消息的窗口接收的消息
    hIcon As Long               ' 托盘图标句柄
    szTip As String * 128       ' Tooltip 提示文本
    dwState As Long             ' 托盘图标状态
    dwStateMask As Long         ' 状态掩码
    szInfo As String * 256      ' 气球提示文本
    uTimeoutOrVersion As Long   ' 气球提示消失时间或版本
                                ' uTimeout - 气球提示消失时间(单位:ms, 10000 -- 30000)
                                ' uVersion - 版本(0 for V4, 3 for V5)
    szInfoTitle As String * 64  ' 气球提示标题
    dwInfoFlags As Long         ' 气球提示图标
End Type
' dwState to NOTIFYICONDATA structure
Private Const NIS_HIDDEN = &H1              ' 隐藏图标
Private Const NIS_SHAREDICON = &H2          ' 共享图标
' dwInfoFlags to NOTIFIICONDATA structure
Private Const NIIF_NONE = &H0               ' 无图标
Private Const NIIF_INFO = &H1               ' "消息"图标
Private Const NIIF_WARNING = &H2            ' "警告"图标
Private Const NIIF_ERROR = &H3              ' "错误"图标
' uFlags to NOTIFYICONDATA structure
Private Const NIF_ICON As Long = &H2
Private Const NIF_INFO As Long = &H10
Private Const NIF_MESSAGE As Long = &H1
Private Const NIF_STATE As Long = &H8
Private Const NIF_TIP As Long = &H4
' dwMessage to Shell_NotifyIcon
Private Const NIM_ADD As Long = &H0
Private Const NIM_DELETE As Long = &H2
Private Const NIM_MODIFY As Long = &H1
Private Const NIM_SETFOCUS As Long = &H3
Private Const lngNIM_SETVERSION As Long = &H4
Private lngPreWndProc As Long

'*************************************************************************
'**函 数 名:ShowNotifyIcon
'**输    入:frm(Form)                  - 窗体
'**        :strTitle(String)           - 托盘提示标题
'**        :strInfo(String)            - 托盘提示信息
'**        :Optional lngType(Long = 1) - 托盘提示类型  0 无 1 信息 2 警告  3 错误
'**        :Optional lngTime(Long = 10000) - 停留时间
'**输    出:无
'**功能描述:显示托盘图标提示信息
'**全局变量:
'**调用模块:
'**作    者:叶帆
'**日    期:2004-10-14 09:23:14
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'*************************************************************************
Public Sub ShowNotifyIcon(frm As Form, strTitle As String, strInfo As String, Optional lngType As Long = 1, Optional lngTime As Long = 10000)
    
  ' 向托盘区添加图标
    Dim IconData As NOTIFYICONDATA
    
    strTitle = strTitle & vbNullChar
    strInfo = strInfo & vbNullChar
    
    With IconData
        .cbSize = Len(IconData)
        .hwnd = frm.hwnd
        .uId = 0
        .uFlags = NIF_TIP Or NIF_ICON Or NIF_MESSAGE Or NIF_INFO Or NIF_STATE
        .uCallBackMessage = WM_NOTIFYICON
        .szTip = strTitle
        .hIcon = frm.Icon.Handle
        .dwState = 0
        .dwStateMask = 0
        .szInfo = strInfo
        .szInfoTitle = strTitle
        .dwInfoFlags = lngType
        .uTimeoutOrVersion = lngTime
    End With
    
    If lngPreWndProc = 0 Then    '没有初始化
       Shell_NotifyIcon NIM_ADD, IconData
       lngPreWndProc = SetWindowLong(frm.hwnd, GWL_WNDPROC, AddressOf WindowProc)
    Else                      '已初始化
       Shell_NotifyIcon NIM_MODIFY, IconData
    End If
    
End Sub

'*************************************************************************
'**函 数 名:DelNotifyIcon
'**输    入:frm(Form) - 窗体
'**输    出:无
'**功能描述:删除托盘图标
'**全局变量:
'**调用模块:
'**作    者:叶帆
'**日    期:2004-10-14 09:33:01
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'*************************************************************************
Public Sub DelNotifyIcon(frm As Form)
    If lngPreWndProc <> 0 Then
        ' 删除托盘区图标
        Dim IconData As NOTIFYICONDATA
        With IconData
            .cbSize = Len(IconData)
            .hwnd = frm.hwnd
            .uId = 0
            .uFlags = NIF_TIP Or NIF_ICON Or NIF_MESSAGE
            .uCallBackMessage = WM_NOTIFYICON
            .szTip = ""
            .hIcon = frm.Icon.Handle
        End With
        Shell_NotifyIcon NIM_DELETE, IconData
        SetWindowLong frm.hwnd, GWL_WNDPROC, lngPreWndProc
        lngPreWndProc = 0
    End If
End Sub
'*************************************************************************
'**函 数 名:WindowProc
'**输    入:ByVal hwnd(Long)   -
'**        :ByVal msg(Long)    -
'**        :ByVal wParam(Long) -
'**        :ByVal lParam(Long) -
'**输    出:(Long) -
'**功能描述:frmTest 窗口入口函数
'**全局变量:
'**调用模块:
'**作    者:叶帆
'**日    期:2004-10-14 09:19:06
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'*************************************************************************
Function WindowProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    ' 拦截 WM_NOTIFYICON 消息
    If msg = WM_NOTIFYICON Then
        Select Case lParam
            Case WM_RBUTTONUP
                ' 右键单击图标是运行这里的代码, 可以在这里添加弹出右键菜单的代码
            Case WM_LBUTTONDBLCLK
                ' 左键单击 显示窗体
                  frmTest.Show
            Case NIN_BALLOONSHOW
                Debug.Print "显示气球提示"
            Case NIN_BALLOONHIDE
                Debug.Print "删除托盘图标"
            Case NIN_BALLOONTIMEOUT
                Debug.Print "气球提示消失"
            Case NIN_BALLOONUSERCLICK
                Debug.Print "单击气球提示"
        End Select
    End If
    WindowProc = CallWindowProc(lngPreWndProc, hwnd, msg, wParam, lParam)
End Function

 

以下是此作者发表的其它文章


http://www.niftyadmin.cn/n/4072646.html

相关文章

CSS——什么是BFC?

昨天晚上看了BFC&#xff0c;写笔记记录一下。 CSS规范中对 BFC 的描述 9.4.1 块格式化上下文&#xff08;Block Formatting Context&#xff0c;BFC&#xff09; 浮动&#xff0c;绝对定位元素&#xff0c;非块盒的块容器&#xff08;例如&#xff0c;inline-blocks&#xff0…

Windows XP Nlite 2007珍藏版 BY 丘比特

Windows XP Nlite 2007珍藏版 BY 丘比特 图片&#xff1a; 图片&#xff1a; 图片&#xff1a; 图片&#xff1a; 2007-12-26 23:03 本光盘是本人专为老机、网吧及封装母盘所做的Windows" class"t_tag">Windows XP SP2精简版&#xff0c;及配套使用的软件工具…

【php设计模式】单例模式

实现单例的三个关键点&#xff1a; 1、使用一个静态成员来保持一个单例实例 2、一个私有的构造方法使得该类只能在类的内部方法中被实例化 3、在实例化对象的静态方法中&#xff0c;先判断静态变量是否已经被赋值&#xff0c;如果赋值则返回该静态成员如果没有则重新实例化赋值…

如何用ps做计算机科学系的logo,PS教你制作一个精致的大众汽车LOGO图文教程

这个教程将向你展示&#xff0c;如何运用图层样式、径向渐变工具和多边形套索工具&#xff0c;来描摹传说中的大众形象标志。一起来看看吧我们的教程被分为两个简要的阶段&#xff1a;1. 创建圆形球面2. 绘制 “VW”徽标(大众Logo的主形——译者注)作者PSD源文件&#xff1a;微…

开关IIS不重启电脑

开关IIS不重启电脑 有时候我们在WEB程序如&#xff1a;ASP,中无意中使用到了一个死循环&#xff0c;或者在测试 DLL组件时&#xff0c;挂了。这时候IIS就停止了响应&#xff0c;我们要继续我们的工作啊&#xff0c;重启IIS服务吧。 然而这个进程还在执行&#xff0c;Internet 服…

Django(一)持续更新中

一、Django基本流程和命令行工具 1. 安装Django 1pip3 install django2. 在当前目录新建一个mysite项目 1django-admin.py startproject mysite startproject命令创建一个目录&#xff0c;包含以下文件&#xff1a; __init__.py # 空文件&#xff0c;让Python把该目录当成一个…

HTC是HTML Component的缩写

HTC是HTML Component的缩写&#xff0c;是IE5及后续版本浏览器所支持的客户端组件。据我个人理解&#xff0c;HTC就是一组以DHTML为基础封装了客户端行为的脚本&#xff0c;每HTC以*.htc的文件存储&#xff0c;一个HTC是一个客户端“类”。 编写HTC最重要的一点是知道element对…

利用Spring Data Redis 来实现消息的发布订阅机制

2019独角兽企业重金招聘Python工程师标准>>> redis是一款高性能key-value存储系统&#xff0c;不仅能做缓存&#xff0c;还能用于消息队列 这里利用Spring Data Redis 来实现消息的发布订阅机制 Demo地址&#xff1a;https://gitee.com/1913210361/redis-queue-demo…