LabVIEW FPGA番外篇:利用VIPM第三方工具包轻松实现托盘程序和气泡通知
在我们日常使用的很多软件里面都有一个托盘图标,那就是桌面上的窗口关闭之后,右下角的任务栏里面会出现一个小图标,那就是托盘图标。比如大家经常使用的QQ、微信、旺旺、向日葵等等。托盘的好处在于,当我们不需要主程序占据当前窗口,而使其在后台自动待机或者运行时,使其变成一个小小的气泡图标,当有新的消息或者中断触发时,任务栏里面会自动弹出一个气泡提示通知,或者人为右击这个托盘图标出现一个菜单,然后直接选择对应的功能即可,比如QQ上线、离线、退出等类似这样的功能。
由于托盘程序在日常的消费类应用软件是个标配,而大家平时使用LabVIEW开发的exe程序,经常会忽略这一点。如果用户希望自己编写的LabVIEW API应用程序也具备这样的托盘功能,该怎么编写呢?
看过陈树学写的《LabVIEW宝典》这本书的用户,可以看到里面有一节讲到了怎么使用.net来表写一个托盘程序,但是里面的demo太简单了,而且展示度不够,不是很专业。
今天我们给用户介绍的是国外一家名为Averna公司开发的第三方VIPM工具包,那就是“Notification Icon”,大家可以在VIPM软件里面搜索这个工具包,然后选中安装到LabVIEW里面即可,如图1所示。

安装完成,点击左侧的“Show Example”按钮,即可打开官方提供的托盘气泡演示Demo程序,如图2所示。对应的程序框图也不复杂,如图3所示。


这个Demo写的非常好,面面俱到,人际交互做的也很好,相比《LabVIEW宝典》里面的抛砖引玉,Averna公司这个Demo要更加贴近实际应用,并且功能更完善。
直接运行这个Demo程序,可以看到右下角任务栏里面立刻出现了一个新的托盘小图标,如图4所示。当然,用户也可以直接将这些icon替换程序自己的应用软件图标。

如果,我们点击一下“Display Icon”下拉列表选择另外一个旧的图标,此时,右下角的图标会立刻切换,如图5所示。那么大家肯定想到了,我们的QQ上线和离线出现的不同小图标,其实本身就是两个不一样的icon罢了,如果想要什么时候显示哪个icon,直接在程序里面切换即可,对应的LabVIEW程序框图也很简单,直接赋值不同的index图标索引即可,如图6所示。


接下来,我们可以演示一下怎么让任务栏里面的托盘图标上出现一个提示框,提醒用户当前程序发生的事情。当我们的LabVIEW应用程序产生一个警告,比如,采集卡DAQ读取数据发送超时,或者数据流盘保存时没有选择正确的文件时,点击前面板上的“Show Balloon”按钮,此时,右下角的托盘气泡图标上就出现一个提示框,如图7所示。实际应用中,肯定是通过程序来自动触发产生的,对应的程序框图如图8所示。


如果,我们将通知类型选择为“Error”错误时,并修改一下提示框的名称和内容,点击“Show Balloon”按钮时,可以看到右下角的托盘气泡通知图标相应的发生了变化,如图9所示,由原先的三角形黄色警告logo变成了红色的×错误标志。

最后,我们再来演示一下类似右击QQ托盘图标出现的菜单栏功能。右击任务栏里面的Demo气泡图标,出现一个含有3个选项的菜单栏,选择其中的“Open”,此时上位机立刻出现一个名为“Open”的对话框,说明这个指令操作生效了,如图10所示。对应的LabVIEW实现方式其实就是前面初始化的话,注册了一个用户事件,用来响应任务栏里面的托盘气泡菜单的,如图11所示。


当然,所有的托盘程序都有一个必备的技能,那就是不用打开主程序,直接右击托盘气泡图标,选择“Exit”、“退出”或者“关闭”即可将该应用程序关掉,如图12所示,对应的LabVIEW程序框图也很简单,就是直接将这个LabVIEW VI应用程序退出关闭掉即可,如图13所示。



