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

用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
Twitter联合创始人推社交搜索应用Jelly 马云“食言”进军手游分成比例8:2,开发者可拿7成 CodeCombat游戏全面开源:玩游戏也能学编程 Netflix首席云架构师Adrian Cockcroft加盟Battery Ventures Android 4.3附体:RIBX发布FB/Ti 互联网手表 IE11界面布局的秘密武器:Quero Toolbar 【开源专访】Node-Webkit作者王文睿:桌面应用的全新开发方式 CentOS归属红帽:企业级Linux领域社区与商业的融合 印度初创公司Little Eye Labs证实已被Facebook收购 雅虎收购Aviate:重在提升用户体验 SDN领域硝烟再起,Oracle将Corente收入囊中 Hadoop科普文——常见的45个问题解答 CES 2014:奥迪下一代汽车将采用NVIDIA的芯片! Cocos 3.0 Beta发布:更易用、更友好 开拓新兴市场?诺基亚或推Android手机,UI界面遭泄露 预测2014大数据值得关注的8个发展方向 霸主地位再临挑战?Salesforce CEO,我们不只有Oracle LBS应用新星、“司机好助手”微车借力移动互联网,志在打造车主的个人移动门户 新一代IDE Light Table开源:让编程工作更简单 图片应用也能高大上,看Cooliris如何玩转无人机 拥抱Spark,机遇无限——Spark Summit 2013精彩回顾 1月10日:改变世界的iPhone七岁了,你是传奇! 同洲电子推出首款手机操作系统960OS 免费授权使用 如何在Windows 8.1的IE11中打开同步选项卡? 25年老对手评价微软:换CEO可行,但是太迟了 【PPT集萃】十位一线专家分享Spark现状与未来(三) 万元奖品等你拿!2014创客118新年大Party! Firefox OS的2013回顾和2014展望 Strom8 CEO:搞好手游开发,合伙人很重要 2013年Q4全球PC出货量同比下滑6.9% 已连续下滑七个季度 一周消息树:2013年十大产品、图书、公司盘点 关于SendMessage(高分相送,紧急) 急!!!高手进! 在查找结果中如果某一字段的值相等,只取出其中一条的问题! squid的安装问题???????????????????? SQL语句问题? 冒昧求救,光驱不能使用,不能boot 我的主机总收到外面发的广告信息? 高分求助急!!! 见鬼了,我添加一个TServerSocket控件,然后编译出现:Declaration terminate incorrectly 有谁知道用哪款打印机比较好呢? 按钮BitBtn1上有图片,在图片上写字的问题。(在先给分!) cystal reports 8.5 english显示繁体问题,急,等待 Unix下用什么源代码检测工具比较好? 我的电脑出什么问题了?各位帮帮忙 界面导航如何分类? 怎样得到本机的网卡号??? %¥#问个小问题,知道的都来抢分啊 谁知道哪儿有支持认证的SMTP组件下载? 有什么软件能查看PE文件的? ADO问题!!!! 100分求购最简单的串口程序!需要详细注释! 怎么给大家份呀?to wyz_csdn等(500分诚征wav 转换到MP3的源程序(VC++的例子)) 在directshow中,不知道怎样对播放的画面的亮度进行控制? 如果深愛的人要離開你,是變心還是死亡好一點?(讨论) 贴了二次为什么没有人指教? 戒水快两年了,如今回来看看,物不是人非啦 新手一问 关于datagrid 修改数据的问题,帮我看看,多谢 谁有这两本书,请帮忙发到我的邮箱里,100分相送 到底应该怎么办? 大家好,如何打开DLL文件? 建议成立一个程序员协会 关于IE中图片的保存 VB 语言支持问题 高分求李维《delphi5.xDELPHI5.X ADO/MTS/COM+高级程序设计》示例源码!!!! 请yangshu进来!给妳点分!!!倒分! 请教各位如何实现dbgrid中按住shift多选的问题? 请问把sql-server7中的数据文件copy出来行吗? 找不到类,请大家帮忙解决,谢谢 异常处理问题 怎样恢复被损坏的"本地用户和组" 小弟在线等待,一小问题,,大家来帮忙?? 求jsp树的原代码 最好是jsp+js+xml 执行效率要高。(从数据库中动态生成的)在线 关于多层结构中事务处理的问题. VB6.0升级到VB.NET的问题。 在ASP中使用ActiveX Control ADOTable表名如何在运行时“递进” 这样的待遇能招到人吗? 不好意思,问个技术问题。其他版实在没人气!只好来这问! 不爽,辞职,散分! 在线等待(100)往一个表的字段赋值,怎么不行啊! 傅雷在第一封信中对儿子寄予了怎样的期望 吾尝终日不食 终夜不寝 已死无益 不如学也 血浆中co2能不能运到组织液中原题所问:co2的来源及其去向?来源一空有血浆,去向一空有组织液,是不是表明血浆中的co2可以进入组织液? 了解傅雷这封家书是在什么情况下写给儿子的.2,傅雷想通过这封书信告诉儿子什么 子曰:吾尝终日不食,终夜不寝,以思,无益,不如学也. 英语翻译(一) (甲)良尝闲从容步游下邳圯上,有一老父衣褐,至良所,直堕其履圯下,顾谓良曰:“孺子,下取履!”良愕然,欲殴之.为其老,强忍,下取履.父曰:“履我!”良业为取履,因长跪履 傅雷在这封信中对儿子寄予了怎样的期望' 用烤箱时烤鸡翅的油滴到加热管上要紧吗? 宋太祖的杯酒释兵权是什么意思? 傅雷先生的信写给哪个儿子《傅雷家书》 孔子曰:吾尝终日不食,终夜不寝,以思无益,RT.并讲明了什么学习道理?温故而知新的“温故”和“知新”顺序能否调换?为什么?“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠, 为什么干电池长时间放置又有了电?3q 联合国吧世界上的国家分为两大类一是.2是.中国属于哪一类 宋太祖杯酒释兵权的目的是 该化合物该怎么命名?书上有命名为4-甲基-2-戊胺的? 文言文中“为所结构” 除表被动,意思是? 北宋建立后,宋太祖杯酒释兵权的主要目的是什么? 为什么没电的干电池长时间不用后还会生出电来. 联合国把世界上的国家大致分为两大类,一是什么,二是什么.我们中国属于什么 为什么宋太祖要“杯酒释兵权” "四亚甲基二矾四胺"是什么东西啊知道那有卖的吗?这边的耗子成灾,没有办法,善哉善哉 θ=arctan(4/3)=53.13° 怎么算出53.13°的 怎样改变共射放大器的偏置电路来改变组合放大器的性能 N'N-二(2-羟丙基)-N'N-四甲基己烯二胺有谁知道这个东西那里有销售的,或者是相关产品,以及类似的产品,只要是N'N-二(2-羟丙基)-N'N-四甲基这种类型的就可以了,(CH3)3[CH3CH(OH)CH2]N+-(CH2)6-+N(CH3)2[CH2CH(O 世界有几个字 赵匡胤为什么杯酒释兵权? 共轭二烯烃和氢气有1,4加成的反应吗? 谁能给我看一个世界上笔画最多的字? 宋太祖 杯酒释兵权 那些权臣为什么听他的呢? 为什么宋太祖要杯酒释兵权? 古文中的“以”翻译成“把”表什么?比较翻译成“用”表方式.比如 A=arctan1/2 干电池用完了,为什么放置几天后又“生”电了呢? 钠和酸反应时是不是也先跟水反应先的啊 现有某钢样10g,在充足的氧气中燃烧后,生成二氧化碳0.22g,求钢样的含碳量比率写出方程式及主要过程 耳机的两个喇叭是串联还是并联 文言文中被动句往往会有哪些标志? 它的主谓宾有什么特点? 韩信,张良,萧何各是哪个时代的人,成就是什么RT 用干柴草或煤气做燃料来煮饭,在这个过程中是什么能转化为热能 钠先和水反应还是先和酸反应? 大家认为张良;萧何;韩信,你会更信任谁?我最喜欢张良,信任他简单或具体说明原因 农民在刚刚返青的麦田里烧柴草是干什么?请问是干什么 是为了保暖吗 文言文 为表被动时这时候为连带的介词结构 做状语么?例句 吾从板外相为应答 y=arctan(1-x^2)/(1+x^2)这个算不算复合函数答案是dy=[-2x/(1+x^4)]dx 但是我认为求微分应该是arctanu求导再乘du,但是du应该有等于u求导乘dx,可是看答案的意思好像没有再算du,而是直接用arctanu求导乘dx ( 麻烦会数学的帮我看看这个arctan(1/6)=? 英语翻译《三峡》“素湍绿潭,回清倒影. 请问y=arctan(1-x),求y' 考研数学三:arctan函数问题如图画蓝线部分,arctan(e^x)+arctan[e^(-x)]=π/2怎么算的? 由古文《孙权劝学》引出的成语是什么?一定要准确无误! 奥尔良烤鸡翅的做法我想用烤箱做奥尔良烤鸡翅,佐料怎么拌? ∫∫(D)arctan y/x dxdy.D:1≤x^2+y^2≤4,y≥0,y≤x 孙权劝学和祖逖北伐中的成语 1、一块蔬菜基地,种着4种蔬菜,其中西红柿有105亩,占总面积的35%,另外三种蔬菜,黄瓜90亩,芹菜45亩,青菜60亩.问另外三种蔬菜占总面积的百分之几?2、 y=2x*arctan(y/x),求y‘’ Arctan的反运算怎么算不用科学计算器 口算 比如arctan1=45‘ 那arctan6.441=多少度 吾尝终日不食,终夜不寝,以思,无益,不如学也.的意思 做饭时若要时柴草燃烧更旺 可将柴草架空 其原因是? arctan(-1)=-π/4,怎么算的? 终夜不寝的寝的意思 柴草燃烧释放的是生物能吗 31省区市9月CPI涨幅出炉 物价“1-9月全国规模以上工业企业实现利润孟加拉国贫民窟准妈妈的艰辛生活(组图法国正式要求美国停止监听行为日本近海7级地震核电站无异常 测得最全球最大海上书店巴林“首秀”新老警务联络官交接 南非侨界寄予厚望各国“吃货”探讨舌尖上的文化 亚洲食接个孩子的功夫 她停在路边的奥迪Q5钱塘江边一工地挖淤泥挖出160多颗炮马云:“闯”就是拆开门,让马儿欢跑萧山机场航班今起开通去大理、常德、拉北京张必清违建假山长廊仍在 称月底拆湖南官员“限宴令”前突击办酒宴 有人日本近海7级地震核电站无异常 测得最中国海军核潜艇部队首次揭秘义乌一小区凌晨发生爆炸 警方侦查后定秋高气爽节奏持续 下一场雨很可能要等浙江艺术将走进卢浮宫 参展作品昨起在国内经济合作洽谈会上 杭州又赚得个盆大腕心声:做让人羡慕的浙商 做让人尊合生杯3对3笼式足球赛结束中国通信设施服务股份有限公司成立丹江口将举办摩托艇联赛社体指导员公益服务西部行走进兰州贫困地区体育教育仅靠慈善远远不够休宁10月举办首届中国户外评奖大会高校体育场馆开不开放都成难题济南“新市民子女艺术课堂”3年免费培2014民航科普公益夏令营开营阳光体育大会 倡导健康快乐湖南邵阳启动2014年应届贫困大学新沪昆高速邵怀段发生特大交通事故中阿建立全面战略伙伴关系习近平会见阿根廷副总统兼参议长布杜和习近平分别向马来西亚荷兰国家元首致慰铁木真国际山地车挑战赛举行新疆88个县级妇幼保健院实现“母亲健河南省许昌县大学生村官结对困难户亚洲轮滑锦标赛将在海宁举行千名希望小学学生走进“梦想课堂”开化将举行世界地掷球锦标赛
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘