说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用Visual Basic编写托盘程序

HTML文档下载 WORD文档下载 PDF文档下载
用Visual Basic编写托盘程序



  在WINDOWS98里,右下角有许多应用程序的图标。而程序本身的窗口是隐藏的,若你需要调用应用程序的窗口,则双击该图标即可。这种程序称为托盘程序。这是WINDOWS98操作系统的一大特色。使用户能够更加快捷的显示和隐藏应用程序,可以使任务栏不致于太乱。托盘程序在Visual Basic里是怎么实现的呢?
    编写托盘程序主要解决两个问题:(1)创建、修改、删除托盘;(2)如何对托盘接收到的消息进行处理。这就要用到几个Windows API函数。
    首先,Shell_NotifyIcon是用于托盘的Shell API。该API用到一个NOTIFYICONDATA结构.
  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
    其次,应该考虑怎样在VB中接收、处理托盘的消息(双击、单击、左键、右键)。C++、Delphi等语言对消息循环的处理较简单,但在VB中处理消息循环时必须应用Win32的SetWindowLong、CallWindowProc这两个API函数。SetWindowLong 函数利用GWL_WNDPROC 索引来创建窗口类的子类(窗口类是用来创建窗口的),它使用AddressOf关键字和回调函数(WindowProc)来截取消息并根据消息来执行相应的功能,如窗口的最大化、最小化、隐藏、退出等。CallWindowProc函数调用原窗口类缺省的指针,程序最后退出时可通过SetWindowLong来关闭子类,重新使原来的Windows过程成为回调函数。
    本程序项目包括一个模块和一个窗体
    1、模块源代码为:
   Option Explicit '强制定义每个使用的变量
    Type NOTIFYICONDATA '定义结构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
    '以下为 Shell_NotifyIcon将用到的常量
    Public Const NIF_ICON = &H2
    Public Const NIF_MESSAGE = &H1
    Public Const NIF_TIP = &H4
    Public Const NIM_ADD = &H0
    Public Const NIM_DELETE = &H2
    Public Const NIM_MODIFY = &H1
    'Shell_NotifyIcon的函数声明
    Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA"
    (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
   '处理消息将用到的结构、常量、API声明
    Type POINTAPI
     x As Long
     y As Long
    End Type
    Type Msg
     hwnd As Long
     message As Long
     wParam As Long
     lParam As Long
     time As Long
     pt As POINTAPI
    End Type
     Public Const WM_USER = &H400
  Public Const WM_RBUTTONDOWN = &H204
  Public Const WM_LBUTTONDBLCLK = &H203
    Public Const GWL_WNDPROC = -4
    Public trayflag As Boolean '定义托盘图标是否在桌面上
    Global lpPrevWndProc As Long
    Global gHW As Long
  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
  Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
   '以下过程为消息循环处理
  Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
   If hw = Form1.hwnd And uMsg = WM_USER+100 Then'检测到鼠标点动托盘图标
    Select Case lParam
      Case WM_RBUTTONDOWN '鼠标右键按下
     Form1.PopupMenu
libgit2:纯C语言实现的Git开发包 MongoDB的得与失 开箱即用!Android四款系统架构工具 谁说Kinect只是玩物?微软研究院使用它实现口语手语实时翻译 新浪微博推出粉丝服务平台 引发两微PK大战 MDCC2013移动开发者大会最新日程发布 门票优惠最后1天 英特尔CEO:EUV光刻技术或助力芯片突破摩尔定律 从微软大数据日看到的,银行、交通、医疗实践之路 IDC:iPad市场份额遭Android平板蚕食 滑至29.6% [TUP第30期]直击移动应用开发难点 探讨跨平台最佳解决方案 用动态语言编写程序,命名更重要 命中率80%,磁盘I/O减半,Flashcache的发展史 这次它很低调:谷歌正式发布Android4.4和Nexus 5 iPhone 5S来了,iPhone 6还会远吗?概念机来袭 [开源推荐]PhysicsJS:基于JavaScript的强大的物理引擎 望虚窥实!专访Oculus Rift创始人Palmer Luckey 利益至上,开源也不免于此 开发者必备,超实用的PHP代码片段! 福利来了!AngularJS资源大集锦 移动周报:“360儿童卫士”手环的是与非 Ion Stoica和他的数据故事(上) 开发者必备:测试网站速度的五个免费在线工具 谷歌员工曝光在谷歌工作那些最糟糕的事情 MDCC 2013全民移动 玩转智能硬件展 如何降低白噪声对网站用户体验的影响? 谁才是真正的资深开发者? 东软董事长刘积仁阐述三大战略 构建以知识资产驱动的商业模式 一切皆为 JavaScript 黑莓:弃私有化任命华人为临时CEO 卖给联想的节奏? 谁说WP仍然不行?意大利WP份额已超iOS MDCC之移动娱乐游戏峰会:百家手游齐逐金玩奖 网络编程大虾有请!如何获得当前每秒的字节数? 怎样在treeview中设置背景图片 to 版主:精华区太乱了,请给予分类。谢了 听说VB可以写PAD的程序,TRUE? JLabel中文本换行问题 马上要开始学BCB,请问BCB有那种类似于VC的创建类的向导吗,看到BCB的界面我就想到DELPHI中创建类的难度 我的游戏引擎BATTLEFIELD作好了,欢迎下载(这次是真的) 一个pop_up menu的问题 那位高手知道在SDK中使用ADO的方法 为普天之下正直而上进的程序员找一个温馨的家 为什么不能把JMF包打进去??? 内存泄露是指例如“为对象分配一个内存区后,未删除内存区,但删除了对象”是吗? 装pws时遇到的麻烦! to freezwy(网络自由人) 有没有限制上传图片大小的asp代码??(不是组件) 还是没有解决!!! 有关VC中数据库绑定的问题! 扔个骨头……下个“圈套”,呵呵? ^_^ 紧急情况!如何改变DataGrid控件中个别行的颜色?? 如果实现断开共享目录的连接 acces 表 SQL语句中如何转换字符型字段为整型? First-chance exception 请教directx的一个入门问题? 诚征MM中…… 多线程问题?? 请问sybase中real类型的最大值是多少?999999999 自杀的N个理由 如何根据日期计算出一年中的第几天? 情况不对,撤丫~~~~~~~~~ 如何在JBuilder4.0编译环境下打包\编译??????? 关于对话框的一个简单问题 如何把几个chm(已编译的 html 文件)文件合成一个chm文件 ado参数问题 请问sevrlet怎么结合HTML模板工作呢?谢谢 我想作一些动态界面,有谁能提供一些有关这方面的资料.小弟有礼了 比较弱的问题 各位大哥:请问哪儿有通过ADO操纵数据库的完整程序下载呀。最好是比较精典一点。谢 写一个php中的include文件,后缀名应该是什么。马上给分 怎么将PHOTOSHOP中分割的图片的结构植入DW4中? send 和 post的区别是什么?谢谢 哪里有《UNIX环境高级编程》这本书下载? 有没有asp的实例应用站点? 问题,请大家帮忙! 怎样删除自己曾经参与但现在不想参与的问题? 怎么样增加可用分呀?我分太少了 怎么使在网页上出现一个长方形框框,新闻在里面从左到右滚动显示 如何实现MPEG-1数据的实时回放? 到哪里下载《Windows程序设计 第5版》书 何处可以找到生成校验位的算法?即对一个长度为24位的字段,根据前22位生成最后两位校验位? 这是什么意思?指针函数吗? 请问有谁知道哪里有关于图形格式转换的控件或DLL?(先谢了!) 给lilyheart(百合心) 甲乙丙三人合作承包了一项工程,6天能全部完成.已知甲单独做所需的天数与乙丙两人合作所需的天数相同,甲与乙合作所需的4倍与丙单独完成这项工程所需的天数相同,求乙丙单独完成这项工 一件工程,甲做要10天 乙做要12天 丙做要15天 甲乙合作3天后,甲因事离开,丙参加工作,问还要多少天完成? 一项工程,甲队单独做10天完成,乙队单独做12天完成,两队合作2天共完成这项工程的几分之几? 师徒三人合作承包一项工程,4天能够全部完成.已知师傅单独做所需天数与两个徒弟合作所需天数相等;而师傅 1)一项工程价单独做需10天,乙需12天,丙单独做需15天,甲丙先做3天后,甲因事离去乙参加工作,问还需几 一项工程甲单独做要8天完成,乙单独做要10天完成,两队合作1.5天,还剩下全工程的几分之几、 师徒三人合作承包一项工程,4天才能全部完成.一直师傅单独做所需的天数与两个徒弟合作所需的天数相等,而师傅与乙徒弟合作的时间的2倍与甲徒弟单独做所需的天数相等,那么甲徒弟单独完 一项工作甲单独做要10天,乙要15天,甲先做了2天后,乙接着做,还需几天完成说明白什么符号是什么意思,不要不明不白弄一大堆算式...除号用#表示就行 一项工程,甲乙合作20天完成,甲做10天乙做8天,刚好完成任务的13/30,甲乙分别用多少天完成任务? 甲乙两人承包一项工程,共得报酬610元已知甲做10天,乙做13天,但因甲的技术比乙的技术好,因而预先就约定是甲做4天的工资比乙做5天的工资还要多40元,求甲、乙两人各分得多少元?用一元一次 甲单做20天完工,乙单做10天完工,要两人12天内完成任务,问乙先工作多少天后甲再继续加工可按期完成工作用一元一次方程解 工程甲先做5天乙接着做20天完成;甲先做20天乙接着做8天完成.如果甲乙和做多少天可完成? 甲乙两人承包一项工程,共得报酬610元,已知甲做10天,乙做13天,但因甲的技术比乙好.问题:因而预先就约定甲做4天的工资比乙做5天的工资还要多40元,甲乙两人各分得多少元? 一件工作,甲独作要十天,乙独作要十二天,现在乙先做一天后,两人合作,完成任务时甲做了多少天? 一项工程,如甲先做5天,乙接着做20天可完成;如甲先做20天,乙接着做8天可完成.甲、乙合作几天可完成 某项工程甲单独做要4天乙单独需6天,若甲先做1天,然后二人同做,若甲共做X天,则方程为?要方程 甲乙两人承包一项工程,共得报酬610元,已知甲做8天,乙做10天,但因甲的技术比乙好,因而预先约定甲做4天比乙出做5天的工资多40元,完成一个工程,甲乙各分多少元? 加工零件甲单独20天完成乙只要10天现在两人12天完成问乙需工作多少天后甲再加工才可完成任务用一元一次方用一元一次方程解 完成一件工作,需要甲干5天,乙干6天,或者甲干7天乙干2天.甲乙单独干这件工作各需多少天?设甲是x那...完成一件工作,需要甲干5天,乙干6天,或者甲干7天乙干2天.甲乙单独干这件工作各需多少天? 甲乙两人承包一项工程,共得报酬610元,已知贾做了10天,乙做了13天,但因甲的技术比乙好,因而预先就约定甲做4甲乙两人承包一项工程,共得报酬610元,已知贾做了10天,乙做了13天,但因甲的 一件工作,甲单独做要20天,乙单独做要12天,先由甲做若干天后由乙继续做完,从开始到完工共用14天,甲做了多少天,(分合法) 一项工程,甲乙合作需要a天完成,甲单独作需要b天完成,则乙单独作需要的天数是多少 甲乙两人承包一项工程,共得报酬610元,已知甲做10天乙做13天,但因甲的技术比乙的技术好因而预先就约定甲做4天的工资比乙做5天的工资还多40元,甲,乙各得多少元(方程解)(思路)(一元一次方程) 一项工作,甲独做需20天,乙独做需12天完成,若甲先做若干天后,乙在接着做完,从开始到完工共用14天,甲、乙两人各做多少天? 有一项工程,甲单独做要a天完成,乙单独做b天完成,问甲乙合做完成这项工程需要几天才能完成? 一项工程,甲单独做要8天完成,乙独做需要10天完成,二人合作了4天,还剩这项工程的几分之几? 一件工作,甲独做20天完成,乙独做12天完成.结果甲独做若干天后,由乙接着做,两人共用14天完成.甲先打了多少天 一项工程,甲单独做a天完成,乙独做b天完成,则甲、乙两人合做,这项工程多少天可以完成? 一项工程,甲乙合作8天完成,如果甲独做10天可以完成.两队合作4天,可以完成这项工程的几分之几?有计算过程和方法的优先 一件工作,甲要20天,乙要12天.这件工作先甲做若干天,然后乙继续做完,开始到完工共用14天.问甲乙各做多少天 甲、乙2人合干A.B2项任务.甲独做A需9天.B需12天.乙独作A需3天.B需15天,至少几天能完成任务? 一项工程,甲队单独做8天完成,乙队独做要10天完成.两队合作的一天,共完成这项工程的几分之几? 一件工作,甲单独做要20天完成,乙单独做要12天完成,现在由甲先做若干天后,乙继续完成,共用了14天,甲乙两人各做了多少天?急 甲,乙两人合干a,b工程甲独做a工程需九天b工程需十二天;乙独做a工程需三天b工程需十五天至少几天完成任务 一项工程,甲独做10天完成,乙独做15天完成.(1)甲、乙两队合做4天,完成这项工程的几分之几 一项工程,甲队单独做60天完成,乙队单独做40天完成,现先由甲队独做10天后,乙队也参加工作.还需几天完成 一项工程,甲乙合作20天可以完成,如果甲先做9天,乙再和甲一起做15天也可以完成,求甲乙单独做要多少天?用初二所学的知识解答(分式?反比例?)这个方程怎样解? 一项工程,甲队单独做10天完成,乙队单独做15天完成,两队合做5天,完成这项工程的几分之几? 一项工程 甲单独做40天完成 乙单独60天完成 甲乙合作次工程 由于甲中间休息了若干天 所以经过 27天完成 甲休息了多少天有选项 A 5 B 6 C 3 D 4 有甲乙两个工程,甲人独做甲工程要9天,乙工程12天.乙人独做甲工程要3天,乙工程15天,如两人合作要多少天? 一项工程甲队独做10天完成;乙队独做15天完成,两队合作1天完成这项工程的几分之几? 一项工程由甲队单独施工60天完成游乙队单独施工40天完成甲队独自施工10天后乙队调来和甲队共同施工完成这项工程还需几天? 一项工程,甲干4天,乙再干9天完成这项工作的1/2,已知甲、乙功效比是3:2,两人合做几天完成?是合做几天.. 一项工程,甲要15天完成,乙要20天完成,;两队合作6天后,完成这项工程的(),还剩()没有完成这是另一道题:甲除以乙的商是1.2,甲与乙的比是() 一项工程甲单独干要60天,乙队只要40天,如果乙队先干10天后,甲.乙两队再合干,还需要多少天?算式...... 某项工作,甲单独做要a天完成,乙单独做需b天完成,现在甲单独做2天后,剩下工作由乙单独做,则乙完成所剩下的工作所需天数是多少 一件工程,甲独做10天完成,乙独做12天完成,两人合作4天后,还剩下这件工程的几分之几? 一项工程,甲独做,要40天完成,乙独做要60天完成.现在由甲,乙合作.中间甲休息几天,这样工作30天完成,求甲休息的天数. 数学题一项工程,甲单独做6天的工作量,乙单独做要用7.5天才能做完 现在先由甲单独做2天后,乙加入合做5天一项工程,甲单独做6天的工作量,乙单独做要用7.5天才能做完现在先由甲单独做2天后, 一件工作甲单独做12天可以完成乙单独做十天完成,如果两人一起做这件工作两天后还剩下几分之几? 一项工程,甲单独做15天完成,现在甲乙合作3天后.乙做5天后完成,乙单独做多少天完成?列式 某项工作,甲单独做需a天,在甲做了c天后,剩下的工作由乙单独完成某项工作,甲单独做需a天,在甲做了c天(c 一项工程甲单独做需要10天 乙需要12天 丙单独做需要15天,甲、丙先做3天后,甲因事离去,乙参与工作问还需几天完成? 甲乙合作一件工作要15天才能完成,现在甲乙合作10天后,再由乙独做6天,甲单独完成要多少天 (1)一项工程,甲队独做a天完成,乙队独做b天完成.两队合作,完成的天数是( ). 有一项工程甲单独做要10天,乙单独做12天,丙独自做15天,甲丙先做3天后,甲离开乙加入工作还要几天完成 甲乙合作一件工作要15天才能完成,现在甲乙合作10天后,再由乙独做6天,还剩下这件工作的十分之一,甲单独完成要多少天 一项工程,甲单独做a天完成,乙队独做b天可以完成.两队合作,完成的天数.用字母表示 一件工程,甲单独做需10天,乙单独做需12天,丙独做需15天,甲、乙合作3天后,甲因事离开,丙参加工作,问还需多少人完成? 一项工程,甲单独做20天完成,乙单独做15天完成,现在甲乙合作若干天后,剩下的部分由乙做,先后用了12天,求甲做了多少天
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn