LoginSignup
25
37

More than 5 years have passed since last update.

HTML Applications その1

Posted at

はじめに

いままで、JScript関連についていろいろ書いてきましたが、GUIが必要なケースがあると思います。
そんな時に使うのが、「HTML Applications」です。

HTML Applications

簡単に言うと、HTMLの拡張子を「hta」に変えたもので、HEADタグ内にHTA:APPLICATIONタグが必要になります。

簡単なサンプルです。

sample01.hta
<!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」を使う場合のサンプルです。

sample02.hta
<!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>

ちょっと調査に時間がかかりすぎたので、今回はここまでです。

25
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
37