はじめに
いままで、JScript関連についていろいろ書いてきましたが、GUIが必要なケースがあると思います。
そんな時に使うのが、「HTML Applications」です。
HTML Applications
簡単に言うと、HTMLの拡張子を「hta」に変えたもので、HEADタグ内にHTA:APPLICATIONタグが必要になります。
簡単なサンプルです。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<HTA:APPLICATION
ID="oHTA"
APPLICATIONNAME="name"
BORDER="thick"
BORDERSTYLE="normal"
CAPTION="yes"
CONTEXTMENU="yes"
ICON="./icon.ico"
INNERBORDER="yes"
MAXIMIZEBUTTON="yes"
MINIMIZEBUTTON="yes"
NAVIGABLE="no"
SCROLL="yes"
SCROLLFLAT="no"
SELECTION="yes"
SHOWINTASKBAR="yes"
SINGLEINSTANCE="no"
SYSMENU="yes"
VERSION="0.0.1"
WINDOWSTATE="normal"
/>
<title>HTA SAMPLE 01</title>
</head>
<body>
HTAサンプル01
</body>
</html>
HTA:APPLICATIONタグに、沢山の属性があります。
ID
スクリプト内でオブジェクトとして利用する場合、ここで設定した名称で利用できます。
APPLICATIONNAME
アプリケーション名です。
BORDER
ウィンドウのボーダを設定します。
値 | 説明 |
---|---|
thick | デフォルト値、通常のIEと同じ? |
dialog | サイズが変更出来なくなります。 |
none | 周りの枠が無くなります。 |
thin | 「dialog」と同じ? |
BORDERSTYLE
コンテンツのボーダを設定します。
これも、BORDERと同様MSDNでは以下が設定できると記述していますが、
私の環境(IE11)では「sunken」系だけ、ちょっと違うかなという程度でした。
値 | 説明 |
---|---|
normal | デフォルト値、通常のIEと同じ? |
complex | 「raised」と「sunken」混合? |
raised | 「raised」? |
static | ??? |
sunken | 「sunken」? |
「raised」と「sunken」については、ここを参照願います。
CAPTION
タイトルバーの表示( yes 、デフォルト値)、非表示( no )を設定します。
非表示(no)に設定する場合は、scriptでウィンドウをクローズするボタンを作成しておかないと、タスクマネージャから消すことになります。
また、ウィンドウの移動もできなくなるので気をつけて下さい。
CONTEXTMENU
コンテンツ内でマウスの右クリック時にメニューを出す( yes 、デフォルト値)か、出さない( no )かを設定します。
SELECTION属性が「no」の場合、この設定は意味をなさず「no」となります。
ICON
タイトルバーの左に表示するアイコンのパス(相対でも可)を設定します。
32ピクセルx32ピクセルの「.ico」フォーマットのファイルのみとなっています。
INNERBORDER
内側のボーダを3Dにする( yes 、デフォルト値)か、3Dにしない( no )かを設定します。
MAXIMIZEBUTTON
タイトルバー右側の最大ボタンを表示する( yes 、デフォルト値)か、表示しないか( no )を設定します。
MINIMIZEBUTTON
タイトルバー右側の最小ボタンを表示する( yes 、デフォルト値)か、表示しないか( no )を設定します。
NAVIGABLE
リンクされているドキュメントをHTAアプリケーション内に表示する( yes )か、新しいウィンドウで表示する( no 、デフォルト値)かを設定します。
例えば、aタグのリンクを押下した時に、この設定値が「yes」なら、このウィンドウ内で遷移しますが、「no」であれば新しいウィンドウで遷移します。
SCROLL
スクロールバーを出す( yes 、デフォルト値)か、出さない( no )か、自動( auto )を設定します。
私の環境(IE11)では、「yes」と「auto」では挙動が同じでした。
SCROLLFLAT
スクロールバーをフラットにするか( yes )、通常( no 、デフォルト値)を設定します。
私の環境(IE11)では、どれを設定しても変化がありませんでした。
SELECTION
コンテンツ内の選択を可能( yes 、デフォルト値)か、不可能( no )かを設定します。
SHOWINTASKBAR
HTAアプリケーションをタスクバーに表示させる( yes 、デフォルト値)か、表示させない( no )かを設定します。
SINGLEINSTANCE
同じAPPLICATIONNAME属性の値をもつHTAアプリケーションを複数起動可能( no 、デフォルト値)か、1インスタンスのみ起動可能( yes )かを設定します。
私の環境(IE11)では、どちらを設定しても複数起動されました。
SYSMENU
タイトルバーのアイコン、最小化、最大化、終了の表示( yes 、デフォルト値)か、表示しない( no )かを設定します。
VERSION
バージョンを設定します。
WINDOWSTATE
初期起動時、ウィンドウをどのように表示するかを設定します。
値 | 説明 |
---|---|
normal | デフォルト値、通常 |
minimize | 最小化して表示 |
maximize | 最大化して表示 |
IEのバージョン
「JSON」オブジェクトを使おうと思ったら、htaで使えなかったので調べてみたところ、「X-UA-Compatible」でIEのバージョンを指定すると使えるようになりました。
ところが、「HTA:APPLICATION」タグでの設定が一部効かなくなってしまいました。
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
設定しても効かない属性
- BORDER
- BORDERSTYLE
- INNERBORDER
- SCROLL
- SHOWINTASKBAR
- SINGLEINSTANCE
挙動が変わった属性
- MAXIMIZEBUTTON 表示/非表示ではなく押下可能/不可能に変わった
- MINIMIZEBUTTON 表示/非表示ではなく押下可能/不可能に変わった
という事で、「X-UA-Compatible」を使う場合のサンプルです。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<HTA:APPLICATION
ID="oHTA"
CAPTION="yes"
CONTEXTMENU="yes"
ICON="./icon.ico"
NAVIGABLE="no"
SELECTION="yes"
SYSMENU="yes"
VERSION="0.0.1"
WINDOWSTATE="normal"
/>
<title>HTA SAMPLE 02</title>
</head>
<body>
HTAサンプル02
</body>
</html>
ちょっと調査に時間がかかりすぎたので、今回はここまでです。