AIRでシステムトレイ常駐アプリ
右クリックで終了するだけのアプリケーションのメモ。
箇条書きで。
- NativeApplication.supportsSystemTrayIconプロパティで、タスクトレイに対応している環境(Windows)かどうかをチェック
- NativeApplication.nativeApplication.icon.menuプロパティに、メニュー項目を追加
- 「終了」メニューが選択されたらアプリを終了するようにリスナ関数を追加
- NativeApplication.nativeApplication.icon.bitmapsにアイコンデータを追加(ここでは単なる緑色の四角)
- ウィンドウを表示しないように、mx:WindowsedApplicationのvisible属性をfalseに
ソースコード
<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="initApp()" visible="false"> <mx:Script> <![CDATA[ import mx.controls.Menu; private function initApp() : void { if (!NativeApplication.supportsSystemTrayIcon) { trace("このシステムはトレイアイコンをサポートしていません"); nativeApplication.exit(); } else { var trayIcon:SystemTrayIcon = NativeApplication.nativeApplication.icon as SystemTrayIcon; var trayMenu:NativeMenu = new NativeMenu(); trayIcon.menu = trayMenu; var exitMenuItem:NativeMenuItem = new NativeMenuItem("終了"); exitMenuItem.addEventListener(Event.SELECT, function():void { NativeApplication.nativeApplication.exit(); } ); trayMenu.addItem(exitMenuItem); // アイコン設定 var images:Array = []; images.push(new BitmapData(16, 16, false, 0x00ff00)); NativeApplication.nativeApplication.icon.bitmaps = images; } } ]]> </mx:Script> </mx:WindowedApplication>