HTAによるスクリプトアプリケーション

 ブラウザ用のWebアプリケーションでは、HTMLベースのGUIと各種のスクリプトやActiveXJavaアプレットなどを組み合わせて高度な機能を機能を提供できます。ただ、セキュリティの関係上ローカルファイルが利用できなかったり、閲覧者が使用しているブラウザによって結果が変わってきたりと実用的なアプリケーションを作ろうとすると不便を感じることも多いでしょう。
 そんな時、アプリケーションを実行する環境が比較的新しい(4以降)Internet ExplorerがインストールされたWindowsなら、HTML Applications(HTA)を利用するとWebページを作るのと同様の感覚で、ローカルファイルに自由にアクセス可能なスタンドアロンアプリケーションを作ることができます。HTAでは、Web同様にHTML+CSS+各種スクリプトで手軽にGUIやレイアウトを作成でき、ActiveXコンポーネントを利用することも可能です。ちょっとしたアプリケーションや高度な処理を行うActiveXコンポーネントの操作用インターフェースなどにHTAを利用すれば、開発を大幅に省力化できるかもしれませんね。

 このHTAを作るのは簡単で、HTMLファイルがあればその拡張子を.htaに変えればダブルクリックで起動できるHTAになります。つまり、適当な文字を表示するHTMLファイルの拡張子を.htaに変えるだけでも単純なHTA作ることができるわけです(そのようなHTAに実用上の利点はないでしょうが)。
 ただ、さすがにそれでは面白くないので、今回はローカルファイルに列挙されているファイルをActiveXコンポーネント(メディアプレイヤー)で再生するHTAを作ってみました。

HTAの例

 今回作るHTAは、以下のようなものです。

  • 起動時に同じディレクトリにあるlist.txtを読み込む
  • list.txtに列挙されているファイルをセレクトメニューに追加する
  • セレクトメニューが選択されたら、そのファイルをメディアプレイヤーで再生する

 まず、セレクトメニューとメディアプレイヤーを以下のようにして配置してみます。メディアプレイヤーは、クラスIDを指定してActiveXコンポーネントとして埋め込んでおきました。

<html>
<body>

<h2 align="center">HTA Test</h2>

<p align="center"><select name="list"></select></p>

<p align="center"><object  id="player" classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95">
</object>
</p>

</body>
</html>

 続いて、アプリケーションの初期化でFileSystemObjectを使用してローカルファイルlist.txtを読み込み、セレクトメニューにファイル名を設定します。

function init() {

  var fso = new ActiveXObject("Scripting.FileSystemObject");
  var f = fso.GetFile("list.txt");
  var rs = f.OpenAsTextStream();

  var i = 0;

  while (!rs.AtEndOfStream) {

    list[i] = rs.ReadLine();

    i++;

  }

  rs.close();

  for (var j=0;j<i;j++) {

    var n = document.createElement("option");
    n.text = list[j];

    document.all.list.add(n);

  }

}

 これで、アプリケーションのセレクトメニューにファイル名のリストが追加されたので、あとはセレクトメニューのOnChangeで選ばれたファイルパスをメディアプレイヤーオブジェクトに渡せば再生されます。

function listChange() {

  document.all.player.FileName = document.all.list.options[document.all.list.selectedIndex].text;

}

 以上で完成です。このアプリケーションは、拡張子を.htmlとするとブラウザでWebページとして表示することも出来ます。ただし、その場合はローカルファイルにアクセスできないのでファイル名が読み込まれず、プレイヤーとしては機能しません。

プログラム

 まず、test.htaをダウンロードしたら同じディレクトリに以下のようなlist.txtを作成してください(ファイルのパスは、実行環境にあわせる)。

D:\BGM\no1.mid
D:\BGM\no2.mp3
D:\BGM\no3.wma

 list.txttest.htaを同じディレクトリに置いたら、test.htaをダブルクリックしてください。これでアプリケーションが起動しますので、セレクトメニューで演奏するファイルを選んで実際に演奏されるか確認してみましょう。

 なお、HTAではHTA:APPLICATIONタグを使用することでアプリケーションの表示形式などをカスタマイズできます。このタグでウインドウの表示形態やアイコン、メニューなども設定できるようなので、うまく設定すればよりネイティブアプリケーションに近い外観・機能を持たせることが出来るでしょう。

test.hta

一度ローカルファイルとして保存してから実行してください。


プログラミング資料庫 > Windowsプログラミング研究室