Adobe AIRでシステムトレイを使ってみる

Adobe AIRでシステムトレイを使ってみます

サンプルコードは以下。

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">

  <mx:Script>
    <![CDATA[
      [Embed(source='toast.png')]
      private var dockIcon:Class;
      
      private var exitMenu:NativeMenuItem = new NativeMenuItem("Exit");

      private function init():void {
        var tip:String = "TEST AIR";
        var shellMenu:NativeMenu = new NativeMenu();
        shellMenu.addItem(exitMenu);
        exitMenu.addEventListener(Event.SELECT, onExit);
      
        var app:NativeApplication = NativeApplication.nativeApplication;
        if (NativeApplication.supportsDockIcon) {
          // Mac
          (app.icon as DockIcon).menu = shellMenu;
        } else {
          // Windows
          (app.icon as SystemTrayIcon).menu = shellMenu;
          (app.icon as SystemTrayIcon).tooltip = tip;
        }
        app.icon.bitmaps = [ (new dockIcon() as Bitmap).bitmapData ];
      }

      private function onExit(evt:Event):void {
        close();
      }
    ]]>
  </mx:Script>
</mx:WindowedApplication>


MacWindowsで若干使い方が異なります。

if (NativeApplication.supportsDockIcon) {
  // Mac
  (app.icon as DockIcon).menu = shellMenu;
} else {
  // Windows
  (app.icon as SystemTrayIcon).menu = shellMenu;
  (app.icon as SystemTrayIcon).tooltip = tip;
}

ツールチップはこんな感じで

メニューはこんな感じ。


※システムトレイのアイコンはIconsPediaのものを使いました。