NoteBook > HTA (HTML Application)

HTA (HTML Application)

はじめに

HTAは、MSDN HTML Applications の導入: ブラウザから解き放たれた DHTML より下記のように紹介されていました

Internet Explorer 5 では、HTML Applications (HTA) が導入されています。
これにより、「ブラウザから解放された」 Dynamic HTML (DHTML) テクノロジを使ってスタンドアロン アプリケーションを作成することができます。
HTA では、アプリケーションを、Web ページを作成する場合と同様に DHTML やスクリプトを使って作成することも、Web 用に作成されたコンテンツをベースに作成することもできます。

ここでいう「ブラウザから解放された」とは、HTA が 2 つの点で Web ページとは大きく異なるということを意味しています。

  • アプリケーションは、すべて DHTML で作成されますが、ブラウザのメニューやツールバーのない自分自身のウィンドウ内で実行されます。
    つまり、アプリケーションがユーザー インターフェイスを完全に定義するということです。
  • アプリケーションは完全に信頼されるものであり、セキュリティ上の理由から Web ページに課せられる制約はいっさい受けません。
    訪問したときに実行される Web ページとは違って、ユーザーは HTA を信頼する必要があります。
    しかし、いったんインストールし、実行すれば、HTA は他のプログラムができることは何でも実行できます。

【HTA ソリューションの例】

HTA を使用することで、さまざまなアプリケーションを作成できます。ここでは、HTAが優れたソリューションとなり得る代表的なシナリオをいくつか紹介します。

Web ページ アプリケーションの目的を変更
Web ページから構築された既存のアプリケーションは簡単に変換でき、Windows アプリケーションを HTA として実行することができます。
HTA アプリケーションは、Web セキュリティ モデルとは独立に機能し、それ専用のユーザー インターフェイスを定義できます。
また、[スタート]メニューからそれを実行することができます。
HTML コンテンツを処理するアプリケーション
HTA は、DHTML Object ModelによってHTML を効果的に処理できます。HTML の作成または編集、サイトのリンクの妥当性検査、コンテンツの比較などを行うアプリケーションは、HTA フレームワークを使ってごく簡単に作成できます。
企業内でのアプリケーションの配布にWebを使用
HTA は、HTTP で配布されたコンテンツを基盤とし、キャッシュに格納できるので、接続された Web モデルの利点をすべて利用して HTA を展開できます。
従来のアプリケーション展開モデルで必要とされるインストール、更新、保守管理の手間はいっさい不要です。
HTA コンポーネントは中央のサーバーで更新されるので、クライアントは新しいものをシームレスにダウンロードし、導入することができます。
簡単なアプリケーションの作成
プログラミング言語を知らなくても、DHTMLやスクリプトを作成できれば、自分の使い慣れた Web オーサリング ツールで簡単なアプリケーションを手早く作成できます。

作成と実行

作成方法

HTMLファイルを作成し、作成したHTMLファイルの拡張子.htmlを.htaに変更します。

実行方法

通常の実行ファイルと同様にダブルクリックやショートカット等から実行可能です。

HTA:APPLICATIONタグ

次のタグをHTMLのHEAD内に記述することにより、HTAの動作を変更することができます。

属性一覧

属性名 説明 値(太字はデフォルト)
id参照するときのid半角英数字
applicationnameアプリケーション名半角英数字
versionバージョン数数字
singleinstancehta単一起動の可否(applicationname設定あり時のみ)yes(単一起動)/ no(複数起動)
showintaskbar最小化時タスクバーに納めるかyes/ no
navigableリンク先のウインドウ表示yes(同一ウインドウ)/no(別ウィンドウ)
windowstate起動時のウインドウ状態normal/ minimize/ maximize
borderボーダーの種類none/ thick/ thin/ dialog
borderstyle枠のスタイルnormal/ complex/ raised/ static/ sunken
innerborderボーダーの立体表示の有無yes/ no
contextmenu右クリック時のコンテキストメニューの表示yes/ no
selection内容選択の可否yes/ no
scrollスクロールバーの有無yes/ no
scrollflatスクロールバーの影(scrollがyesの場合のみ)yes/ no
captionタイトルバー表示の有無(borderに依存)yes/no
sysmenuシステムメニューの表示(captionがyesの場合のみ)yes/ no
iconアイコンファイルの指定(sysmenuがyesの場合のみ)ファイルのパスを指定
maximizebutton最大化ボタンの有無(sysmenuがyesの場合のみ)yes/ no
minimizebutton最小化ボタンの有無(sysmenuがyesの場合のみ)yes/ no

記述例

Sleepの実現

HTAはあくまでもブラウザのJavaScriptで実行されるため、Wshのようなスリープは存在しません。 そのため、下記のようにWshで作成した汎用のSleep処理を作成し、呼び出して実行します。

Sleep.vbs

JavaScriptの場合の呼び出し方

var wsh = new ActiveXObject("WScript.Shell");
wsh.Run( "cscript sleep.vbs 5000",0,1);//5秒スリープ

VBScriptの場合の呼び出し方

Set wsh = CreateObject("WScript.Shell")
wsh.Run( "cscript sleep.vbs 5000",0,1)'5秒スリープ

本家のサイト

MSDN HTML Applications 概要