右键菜单:
var mainMenu:NativeMenu = new NativeMenu();
var minimizeMenu:NativeMenuItem = new NativeMenuItem("Minimize");
var maximizeMenu:NativeMenuItem = new NativeMenuItem("Maximize");
var sepMenu:NativeMenuItem = new NativeMenuItem("",true);
var restoreMenu:NativeMenuItem = new NativeMenuItem("Restore");
var closeMenu:NativeMenuItem = new NativeMenuItem("Close");
minimizeMenu.addEventListener(Event.Select, handleMenuClick);
maximizeMenu.addEventListener(Event.Select, handleMenuClick);
restoreMenu.addEventListener(Event.Select, handleMenuClick);
closeMenu.addEventListener(Event.Select, handleMenuClick);
mainMenu.addItem(minimizeMenu);
mainMenu.addItem(maximizeMenu);
mainMenu.addItem(sepMenu);
mainMenu.addItem(restoreMenu);
mainMenu.addItem(closeMenu);
this.contextMenu=mainMenu;
系统托盘:
var sysTray:SystemTrayIcon =
NativeApplication.nativeApplication.icon as SystemTrayIcon;
sysTray.tooltip = "测试tray";
//
sysTray.menu = this.contextMenu;
sysTray.addEventListener(MouseEvent.CLICK,trayClick);
如何将应用程序最小化到托盘,然后给托盘图标加右键菜单以及添加相应的事件,来激活应用程序窗体.
整个流程:
1. 初始化应用时改变系统默认情况下以系统X事件的处理.
2. 定义新处理逻辑(本文是弹出对话框)
3. 生成托盘图标并置于状态栏
4. 给托盘图标加上右键菜单(本文是exit,和open两项)
5. 给菜单加上相应的事件
6. 大功告成
主要方法:
private var dockImage:BitmapData;
//初始化Application里调用此方法,完成上面的第一步:
public function initApplication():void{
var loader:Loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,prepareForSystray);//这里就是完成第一步的任务须,这个prepareForSystray就是对托盘的生在和菜单的控制
loader.load(new URLRequest("assets/images/32.png"));//这里先要加载托盘图标的小图片
this.addEventListener(Event.CLOSING,closingApplication);//设置关闭体的事件
}
//关闭窗体的事件
public function closingApplication(event:Event):void{
event.preventDefault();//阻止默认的事件
Alert.yesLabel="Close";
Alert.noLabel="Mini";
Alert.show("Close or Minimize?", "Close?", 3, this, alertCloseHandler);//弹出自定义的选择框, 关于Alert的详细用法,参考官方文档或我前面的相关文章.
}
//根据用户的选择来判断做什么,这里选择是就是关闭,选择否(Mini)就是最小化到托盘.
private function alertCloseHandler(event:CloseEvent):void{
if(event.detail==Alert.YES){
closeApp(event);
}else{
dock();//最小化到托盘
}
}
//生成托盘
public function prepareForSystray(event:Event):void{
dockImage=event.target.content.bitmapData;
if(NativeApplication.supportsSystemTrayIcon){
setSystemTrayProperties();//设置托盘菜单的事件
SystemTrayIcon(NativeApplication.nativeApplication.icon).menu=createSystrayRootMenu();//生成托盘菜单
}
}
public function createSystrayRootMenu():NativeMenu{
var menu:NativeMenu = new NativeMenu();
var openNativeMenuItem:NativeMenuItem = new NativeMenuItem("Open");//生成OPEN菜单项
var exitNativeMenuItem:NativeMenuItem = new NativeMenuItem("Exit");//同理
openNativeMenuItem.addEventListener(Event.SELECT, undock);
exitNativeMenuItem.addEventListener(Event.SELECT, closeApp);//添加EXIT菜单项事件
menu.addItem(openNativeMenuItem);
menu.addItem(new NativeMenuItem("",true));//separator
menu.addItem(exitNativeMenuItem);//将菜单项加入菜单
return menu;
}
//设置托盘图标的事件
private function setSystemTrayProperties():void{
SystemTrayIcon(NativeApplication.nativeApplication .icon).tooltip = "TurboSquid squidword";
SystemTrayIcon(NativeApplication.nativeApplication .icon).addEventListener(MouseEvent.CLICK, undock);
stage.nativeWindow.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, nwMinimized);
}
//最小化窗体
private function nwMinimized(displayStateEvent:NativeWindowDisplayStateEvent):void {
if(displayStateEvent.afterDisplayState == NativeWindowDisplayState.MINIMIZED) {
displayStateEvent.preventDefault();//阻止系统默认的关闭窗体事件
dock();//将程序放入托盘
}
}
//将本地应用程序放到托盘
public function dock():void {
stage.nativeWindow.visible = false; //设置本地程序窗体不可见
NativeApplication.nativeApplication.icon.bitmaps = [dockImage];//设置托盘的图标
}
//激活程序窗体
public function undock(evt:Event):void {
stage.nativeWindow.visible = true;//设置本地程序窗体可见
stage.nativeWindow.orderToFront();//设置本地程序窗体到最前端
NativeApplication.nativeApplication .icon.bitmaps = [];将托盘图标清空
}
//关闭程序窗体
private function closeApp(evt:Event):void {
stage.nativeWindow.close();
}
分享到:
相关推荐
AIR教程 1 Adobe AIR右键菜单和系统托盘(Tray)功能以及实现方法 2 如何将应用程序最小化到托盘,然后给托盘图标加右键菜单以及添加相应的事件,来激活应用程序窗体
Api右键菜单 托盘图标 拖拽文件 opengl- Api tray icon context menu drag and drop files opengl
操作系统托盘图标,显示/删除/隐藏系统托盘图标。 这是我很早以前不知道在哪里找的源代码,不是原创。但我在里面添加上了 Hide Tray Icon和Delete Tray Icon的功能。
tray系统托盘显示,教你如何在对话框程序中使用托盘
动画托盘程序,使用托盘TRAy的经典演示程序,使用windows MFC程序编写
objeckdock 是在windows操作系统上,完美模拟MAC OS的任务栏的工具,而一直以来,关于系统托盘问题都是很难解决的一部分,现在有了tray插件,可以完美解决这一问题了
pstrayfactory隐藏系统托盘上的图标,或任务栏上正在运行的程序.
这是一个当程序缩小时到系统托盘的程序,适合于服务类程序
在办公室用电脑就是这么不方便。有时在电脑上打开一些不方便给别人看到的窗口,还得躲躲藏藏的,就算点击...要把正常的软件窗口隐藏到系统托盘中,系统自带的功能可做不到。那么,我们就请PS Tray Factory来帮忙吧!
就是WAMP中使用的托盘程序。其实这个程序是一个独立的程序,主程序可以随意改名,如ServiceTray.exe,他会自动寻找同名的ServiceTray.ini配置文件。 通过ini配置就可以自定义菜单、菜单图标以及菜单鼠标点击动作,...
最近利用pyqt5写了一个小工具,想像微信一样可以在系统托盘驻留,并具备全局热键唤出、ESC键隐藏等功能,下面利用一个简单的UI界面来记录一下实现的过程 基本思路 利用QtDesigner制作UI界面; QSystemTrayIcon制作...
托盘跨平台,单标题,带有弹出菜单的系统托盘图标的超小C99实现。 适用于: Linux / Gtk(libappindicator) Windows XP或更高版本(shellapi.h) MacOS(可可/ AppKit) 还有一个存根实现,它会在尝试创建任务栏...
超好在系统托盘隐藏工具,当想在办公室偷偷的迅雷一下,又怕被领导看见就用这个工具把托盘的图标隐藏了.只有在进程中才能看见,有快捷键直接调出来,非常方便.已经注册.
根据用户需要可以选择隐藏系统托盘图标或者最小化特定应用程序图标(支持最小化 文件夹到系统托盘哦),用户在设置时可以使用右键管理列表规则。 此程序支持隐藏自己哦,你还可以设置快捷键,密码等!更多功能自己...
Tray Java托盘代码实例, Java Tray, 托盘
实现最小化到系统托盘,vc++6.0编译调试
对于后者,我们已经有了一个美好的惊喜,因为功能PS的托盘工厂超过标准的内置函数的操作系统。与PS托盘工厂可以快速隐藏系统托盘图标和容易管理它们。 网络上流传的都是3.0的破解版,使用中还有些小问题,不太好用,...
VC++ Tray 托盘+图标+右键程序源代码,VC源码下载,程序运行后在右下角的托盘处显示图标,并支持鼠标右键菜单,可选择点击操作对应的功能,想在你的VC++项目中增加托盘图标么?本源码就是一个很好的参考范例。 运行...
VB6.0将窗体最小化到系统托盘区 控件法,才是最适合最方便的。使用已被微软封装好的控件:csystray1(名称可自定)。 可直接使用 SysTray.ocx 控件。也可用VB打开工程,做必要的话可作些改进(如更换图标、添加功能...
当我响应用户点击System Tray图标,而用TrackPopupMenu弹出菜单的时候,这个菜单就怎么也不消失!除非点击菜单项!