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

用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
KitCam团队专访:为应用做加法也能雄踞榜首 谷歌哭了:Replicant 4.0 SDK发布搅乱大局 忍者神龟与禅宗启示:如何突破移动广告困境 Linux会是更好的游戏平台?暴雪是这么认为的! 新型恶意软件瞄准Java服务器 AWS被纳为“战略物资”市值或可达到300亿美元? 十张图带你入门Map/Reduce 低端Android野心,Intel发布Atom Z2420处理器 淘宝网的技术发展史(一)——个人网站时代 看Pinterest如何通过架构变化将EC2成本降低了62% 内容vs渠道:法国电信商Free叫板Google 让网站成为应用:Firefox OS掀起革命风潮 屌丝伞兵的逆袭:4人+盛大+远程+最佳手游 新年头彩:Chartboost喜获1900万美元融资 高富帅跻身移动领域 福特开放车载声控API 传低端iPhone最低只要99美元 你怎么看? 辉煌不再 Encanto超级计算机可能被拆分“出售” 知己知彼 企业应用移足云端必须清楚的10大方面 NVIDIA推Android掌机:七年孕育可否成就野心? 人民日报:2013关于新媒体的8个猜想 互联网大时代成就创新小企业 移动互联网创新论坛报道 Mobile Detect:判断移动设备类型的开源PHP类 我是如何Hack Facebook Employees Secure Files Transfer服务的 投资可再生能源:Google 2亿美元投资风力农场 构筑商业生态系统 阿里巴巴集团全面变革组织架构和管理体系 美国众多银行网站遭DDoS攻击 疑似伊朗所为 构建高可扩Web架构和分布式系统实战 CES2013 AMD发布移动处理器路线图和环绕计算概念 对话Linus Torvalds:大多黑客甚至连指针都未理解 PaaS玩家们,怎么演好自己的角色? Apple高管表态:低端机绝不是iPhone的未来 在Vbscript中,我的这段代码有问题吗? 使用vc++写一个关于检测网络流量和硬盘读写速度的软件使用哪几个函数? 求救:我在GUI中用到了Jbuilder的xyLayout,怎样打包成为一个独立的应用程序 答者有分 dbGrid 高分!! 谁有jdk的帮助呀?或是我该在哪里下载? 中国队世界杯进攻名列倒数第一 数据库该学哪种语言??? =====在英文系统下,我用vc,为什么edit控件不能输入中文?==== 急!高分求助:水晶报表在Web上的打印问题 MaskEdBox控件的一个简单问题 凭证检索错误 层的显示位置问题? 数据库该学哪种语言??? 高手进来 TClientSocket和TServerSocket之间采用阻塞方式通信,讨论 大家请帮帮忙!一个关于数据库备份的问题!先谢了! 关于汉诺塔升级版。 TClientSocket和TServerSocket之间采用阻塞方式通信,讨论 如何将系统的短日期格式由yy-MM-dd改为yyyy-MM-dd 100分,再次求助,关于jsp中应用java bean的问题! 求助:如何在自己的程序里控制其它应用程序,主要实现对另一应用程序的鼠标定时自动单击 为什么???? 数据库该学哪种语言??? win2000并口编程,怪事?? 请问一个关于超链接的问题! 动态的软件演示用什么软件做?好象播放时用的是screencam.谢谢 一个利用Access 的report design做完报表后怎样用Delphi编程打印输出此报表的问题 数据库该学哪种语言??? 为什么老是说“要求对象”?高手请进! 例如一个编辑框,设为TIME型的,我用什么方法来检测其有效性呢?? 这句SQL如何写?有关 和checkbox搭配的问题?急急急! ejb问题 有编过输入法的吗? lucene中文检索 关于vc下的字符界面程序的光标控制 服务器端定义的类在客户端还要定义吗?(delphi三层结构) 希望在网络编程方面有经验的高手谈一谈学习网络编程的经验(让新手少走一些弯路)。 help me please!!! 听说Delphi6要出中文版了!有人知道详细情况吗? 数据库该学哪种语言??? 各位大侠帮个忙,跳转页面如何加 Session值? 使用触发器的一个简单例子,请帮忙看看错在哪里?50分相送! 紧急,怎么删除当前记录。。在线等待 foxpro 一个弱智问题,有关在WEB页怎样绑定数据库? Modem为何不能连通? 有一个系统,服务器端是安装sqlserver2000,客户端是安装msde,通过电话拨号连到server,怎样通过增量复制将server更新的数据copy到客户端 寻找WinRunner! 多谢 数据库该学哪种语言??? 酸和酸能反应吗?碱和碱能反应吗?(初中阶段) 为什么我被马蜂蜇了没事?而有的人被蜇了就死了! 人教实验版初一上册语文书有哪些课文该背 已知函数y=2CosX(0≤X≤2)的图像和直线y=2围成一个封闭的平面图形,则其面积为? 爱迪生发明的第一台电灯用的材料是钨丝吗? 灯泡内钨丝为什么会晃动 短文 爱痕 主要内容 世界上目前发现的最的的鲸有多大? 内墙粉刷需要一定要挂网粉刷吗? 爱痕 写出短文的主要类容 世界上最大的蛇和鲸有多大 法制教育作文200字拜托了各位 法制教育作文200字快点 11 爱痕 文后第二题的第二小题怎么写郊外的景色真美啊!郊外的景色真美啊!湛蓝的天空,像一池倒映的湖水.清新的空气,似酒的芳香,令人心旷神怡.这两句有什么不同之处. how wonderful life is,if you are in the world. 白炽灯工作时,钨丝的发射光谱率是多少,哪里可以查到 关于虫的词语急用,快.要2字的. 爱痕的阅读答案1 用——线画出文中可以具体说明“憔悴”意思的句子2憔悴的( ) 憔悴的( )还有我不打了 The world is wonderful because of you.翻译是什么 我的动物朋友作文要小狗的 世界上最大的鲸有多大?(大约就行了)我不急的! is/world/the/here/weather,可以组成什么句子?快 请问哪位有种蓝莓的?,我想学种蓝莓,可以交流一下 彩钢板生锈吗彩钢板造的活动板房会不会生锈 y=-x+1 这个方程的参数方程是什么是x=-根号2/2 y=1+根号2/2还是x=根号2/2 y=1-根号2/2 蝗虫能适于空中和陆地生活 世界上现存最大的鲸是什么?体重是多少? 有关暑假的作文集的前言后记内容包括:重回母校、经典句词汇集(比喻句)、名著(海底两万里、钢铁是怎样练成的)、游泰山、父母的一次谈话、最喜欢的名人(鲁讯)、自我介绍、给 作文好的开头和结尾(快一点,急!)如题,开头结尾各30篇,每篇大概50字 一只鲸的体重大约是72(?). 植物或动物给我的启示作文400字要仔细观察过,还要在最后一自然段有启示 作文~我的动物朋友自己写的最好 种植蓝莓需要把土壤改成酸性的怎么办?我家在东北吉林长春附近农村,要种植蓝莓,怎么把土壤改良成PH值在4.0到5.0之间,改良开始到见效大约要需要多长时间 怎样判断钨丝灯泡寿命已完,我用的是那种橙色的圆形灯泡,是在台灯里面的,今天那台灯接电源了,还总不亮,我想知道是台灯坏了,还是灯泡用完了 一个长方题水池,长15米,宽8米,深1.57米,池底有根内径2分米的出水管,放水时,水流速度平均每秒两米,房完水要几分钟 请问成年鲸约体重多少,身长多少? 最大的鲸有多大?、 一个长方形水池 长15米 宽8米 池中水深1·57米池内有根水管 内直径2分米 流恕每秒2米 水放完需几分钟 蓝莓怎么种植 鲸有多大 扩句 他发怒了,他笑了,他伤心极了,他哭了,每个句子扩30个字,每个句子扩3句 蓝莓种植条件请问蓝莓适合在什么样的条件下种植?蓝莓种的价格大慨是多少?还有它的生长周期? China is the third ____ country in the world 从里面量,底面半径是6厘米的圆柱形容器与底面半径是9厘米的圆锥形容器的深度相等,把圆锥形容器装满水倒入圆柱形容器内,水深比容器深度的四分之五多1.5厘米,圆柱形容器深多少厘米? 作文集的题目、前言、后记该怎么写?适合小学的,不要太文艺,校园的 China is one of the biggest country in the world(找错) 函数Y=1-2cosx,x∈[0,2π]图像 蜜蜂和马蜂蜇人后为什么死亡? China is the largest developing country in the world.的意思? 谁知道作文集的序言则么写?作文集名字是新芽 爱迪生发明第一只灯泡时用的是钨丝吗? China is ___one of the greatest country in the world.A.considering to beB.considered to beC.considering being D.considered being 双曲线x平方/16-y平方/9=1的渐近线方程是什麼? 马蜂蜇人后是死是活原因是什么 急 蝗虫与陆地生活相适应的呼吸器官是( ).A.肺B.鳃C.气管D.气囊 致蓝莓节的一封信 爱迪生发明了电灯,我们都知道使用的是钨丝,那么枪管使用的是什么物质呢? 为什么灯泡用钨丝? 致蓝莓节来宾的一封信 马蜂蜇人后会不会死?我说的是马蜂蜇人后马蜂会不会死、不是人会不会死……天啊 关于灯泡钨丝额定电压3.0V的小白炽灯泡正常工作时,灯丝产生的温度大约是多少摄氏度?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘