関連ページ  
メインウインドウをシステムトレイに登録する :【AIR Flex】

自由なウインドウを作成して使用するには、メインウインドウを非表示にして、
2次ウインドウを作成する必要がありますが、その前にメインウインドウとしての
準備として、いくつか設定しておく必要があります。

まず、メインウインドウを非表示にすると、デスクトップから完全に消えてしまうので、
システムトレイに登録する必要があります。
( もし、このまま使用するのであれば、一般的な常駐アプリケーションとなります )

その為には、アイコン画像を登録する必要があるのですが、
まず、メインウインドウにタイトルアイコンを @Embed('icon.png') で埋め込んで、
そのアイコンを転用する方法を以下で説明しています。

最後に、アプリケーションとして機能できるように、システムトレイアイコンに
メニューを実装しています。
タイトルアイコンとタイトル


systemChrome が standard では、タイトルにアイコンは表示されません。
表示させるには、systemChrome を none に変更します
01.<?xml version="1.0" encoding="utf-8" ?>
02.<application xmlns="http://ns.adobe.com/air/application/1.0">
03.     
04.    <id>airApplication</id>
05.    <version>1.0</version>
06.    <filename>airApplication</filename>
07.     
08.    <initialWindow>
09.        <title>AIR アプリケーション</title>
10.        <content>Mainw.swf</content>
11.        <x>300</x>
12.        <y>200</y>
13.        <width>600</width>
14.        <height>300</height>
15.        <systemChrome>none</systemChrome>
16.        <transparent>false</transparent>
17.        <visible>true</visible>
18.        <minimizable>true</minimizable>
19.        <maximizable>true</maximizable>
20.        <resizable>true</resizable>
21.    </initialWindow>
22. 
23.</application>
01.<?xml version="1.0" encoding="utf-8"?>
02.<mx:WindowedApplication
03.    xmlns:mx="http://www.adobe.com/2006/mxml"
04. 
05.    showFlexChrome="true"
06. 
07.    initialize="initData();"
08.    creationComplete="initApp1()"
09.    applicationComplete="initApp2()"
10. 
11.    visible="true"
12.    usePreloader="true"
13. 
14.    backgroundAlpha="1"
15. 
16.    alwaysInFront="false"
17. 
18.    titleIcon="@Embed('icon.png')"
19.    title="Flex"
20.>


メインウインドウを非表示にする
非表示にするには、initialWindow の設定で visible=false にし、
かつ WindowedApplication のプロパティで visible="false" にします
01.<?xml version="1.0" encoding="utf-8" ?>
02.<application xmlns="http://ns.adobe.com/air/application/1.0">
03.     
04.    <id>airApplication</id>
05.    <version>1.0</version>
06.    <filename>airApplication</filename>
07.     
08.    <initialWindow>
09.        <title>AIR アプリケーション</title>
10.        <content>Mainw.swf</content>
11.        <x>300</x>
12.        <y>200</y>
13.        <width>600</width>
14.        <height>300</height>
15.        <systemChrome>none</systemChrome>
16.        <transparent>false</transparent>
17.        <visible>false</visible>
18.        <minimizable>true</minimizable>
19.        <maximizable>true</maximizable>
20.        <resizable>true</resizable>
21.    </initialWindow>
22. 
23.</application>
01.<?xml version="1.0" encoding="utf-8"?>
02.<mx:WindowedApplication
03.    xmlns:mx="http://www.adobe.com/2006/mxml"
04. 
05.    showFlexChrome="true"
06. 
07.    initialize="initData();"
08.    creationComplete="initApp1()"
09.    applicationComplete="initApp2()"
10. 
11.    visible="false"
12.    usePreloader="true"
13. 
14.    backgroundAlpha="1"
15. 
16.    alwaysInFront="false"
17. 
18.    titleIcon="@Embed('icon.png')"
19.    title="Flex"
20.>
しかし、このままではデスクトップ上から完全に消えてしまうので、
システムトレイにアイコンが表示されるようにします。
01.<?xml version="1.0" encoding="utf-8"?>
02.<mx:WindowedApplication
03.    xmlns:mx="http://www.adobe.com/2006/mxml"
04. 
05.    showFlexChrome="true"
06. 
07.    initialize="initData();"
08.    creationComplete="initApp1()"
09.    applicationComplete="initApp2()"
10. 
11.    visible="false"
12.    usePreloader="true"
13. 
14.    backgroundAlpha="1"
15. 
16.    alwaysInFront="false"
17. 
18.    title="Flex"
19.    titleIcon="@Embed('icon.png')"
20.>
21. 
22.<mx:Script>
23.<![CDATA[
24. 
25.    // *********************************************************
26.    // initialize
27.    // *********************************************************
28.    public function initData():void {
29. 
30.        trace("[App:beforeDisplay]");
31. 
32.        // *********************************************************
33.        // 表示レイアウトが完成する前に、
34.        // タイトルのアイコンを Image に転送しておきます
35.        // initApp1 では正しいビットマップが作成されません
36.        // *********************************************************
37.        app_icon.source = Object(this.titleIcon);
38. 
39.    }
40. 
41.    // *********************************************************
42.    // creationComplete
43.    // *********************************************************
44.    private function initApp1():void {
45. 
46.        trace("[App:afterDisplay]");
47. 
48.        // *********************************************************
49.        // Image に転送されたアイコンを
50.        // タスクトレイのアイコンとして登録します
51.        // *********************************************************
52.        var bmp:BitmapData = new BitmapData(app_icon.width,app_icon.height,false,0xC0C0C0);
53.        bmp.draw( app_icon,null,null,"normal");
54.        var iconBitmap:Array = new Array();
55.        iconBitmap.push( bmp );
56.        this.nativeApplication.icon.bitmaps = iconBitmap;
57. 
58.    }
59. 
60.    // *********************************************************
61.    // applicationComplete
62.    // *********************************************************
63.    private function initApp2():void {
64. 
65.        trace("[App:start]");
66. 
67. 
68.    }
69.]]>
70.</mx:Script>
71. 
72.<mx:Image id="app_icon" />
73. 
74. 
75.</mx:WindowedApplication>
さらに、このアイコンから終了できるようにメニューを実装します
01.// *********************************************************
02.// applicationComplete
03.// *********************************************************
04.private function initApp2():void {
05. 
06.    trace("[App:start]");
07. 
08.    // *********************************************************
09.    // タスクトレイのアイコンにメニューを追加
10.    // *********************************************************
11.    var adobe:String = "http://livedocs.adobe.com/flex/3_jp/langref/";
12.    var nativeMenu:NativeMenu;
13.    nativeMenu = new NativeMenu();
14.    // 終了
15.    var menuItem:NativeMenuItem = nativeMenu.addItem(new NativeMenuItem("終了"));
16.    menuItem.addEventListener(flash.events.Event.SELECT,
17.        function():void {
18.            // 一応アイコンのビットマップをクリア
19.            mx.core.Application.application.nativeApplication.icon.bitmaps = [];
20.            // 終了
21.            mx.core.Application.application.exit();
22.        }
23.    );
24.    // セパレータ
25.    menuItem = nativeMenu.addItem(new NativeMenuItem("", true));
26.    // サブメニューを作成
27.    var nativeSubMenu:NativeMenu = new NativeMenu();
28.    nativeMenu.addSubmenu( nativeSubMenu, "Adobe Flex 3 リファレンスガイド" );
29.        // NativeMenu
30.        menuItem = nativeSubMenu.addItem(new NativeMenuItem("NativeMenu"));
31.        menuItem.addEventListener(Event.SELECT,
32.            function():void {
33.                openUrl( adobe + "flash/display/NativeMenu.html");
34.            }
35.        );
36.        // NativeWindow
37.        menuItem = nativeSubMenu.addItem(new NativeMenuItem("NativeWindow"));
38.        menuItem.addEventListener(Event.SELECT,
39.            function():void {
40.                openUrl( adobe + "flash/display/NativeWindow.html");
41.            }
42.        );
43.    // 実装
44.    SystemTrayIcon(this.nativeApplication.icon).menu = nativeMenu;
45. 
46.}
47. 
48.// *********************************************************
49.// ブラウザで開く
50.// *********************************************************
51.public function openUrl(url:String):void {
52. 
53.    var req:URLRequest = new URLRequest(url);
54.    navigateToURL(req, "_blank");
55. 
56.}