FrontPage 新規 編集 検索 一覧 ヘルプ

HTA

HTAメモの目次

HTAってなに?

HTA(HTML Applications)とは、文字通りHTMLで作成するアプリケーションです。通常のHTMLではブラウザが立ち上がりますが、HTAではフォームが立ち上がり通常のアプリケーションのように動作します。HTAによりInternet Explorerのテクノロジを最大限に利用したアプリケーションを構築できます。

HTML Applications 概要

早速使ってみようや

HTAを作るのは非常に簡単で、今まで私たちが培ってきたDHTMLの技術がそのまま生かせます。既存のHTMLファイルの拡張子を .hta に変更するだけで、HTAになります。機能の実装はさておき、HTAを実行(ダブルクリック)してブラウザとの違いを確かめてみましょう。

身近にHTMLがない場合は、メモ帳を開いて Hello World! と書いてHelloWorld.hta とでも名前を付けて保存しましょう。

<HTA:APPLICATION>タグ

HTMLファイルの<HEAD></HEAD>間にこの<HTA:APPLICATION>タグを記述します。このタグは省略可能でその場合はデフォルトの設定が使われます。主にアプリケーションの見栄えと振る舞いを定義します。

HTAのサンプル

 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
 <TITLE>HTAの実験</TITLE>
 <HTA:APPLICATION
      APPLICATIONNAME = "HTA_Sample"
      BORDER          = "dialog"
      BORDERSTYLE     = "normal"
      CAPTION         = "yes"
      CONTEXTMENU     = "no"
      ICON            = "htasamp.ico"
      ID              = "oCheck"
      INNERBORDER     = "no"
      MAXIMIZEBUTTON  = "no"
      MINIMIZEBUTTON  = "yes"
      NAVIGABLE       = "yes"
      SCROLL          = "no"
      SCROLLFLAT      = "yes"
      SELECTION       = "no"
      SHOWINTASKBAR   = "yes"
      SINGLEINSTANCE  = "no"
      SYSMENU         = "yes"
      VERSION         = "1.0.0"
      WINDOWSTATE     = "normal"
 />
 </HEAD>
 <BODY bgcolor="#CCCCCC">
 これがHTAだ!どんなもんだい!
 <INPUT type="button" value="閉じる" onClick="VBScript:Window.Close">
 </BODY>
 </HTML>

実際には、ここまで属性を設定する必要はありません。デフォルトから変更があるもののみでいいでしょう。

あまり重要ではありませんが、ICON属性はアイコンファイル名を指定します。指定したアイコンがない場合や指定しなかった場合は、HTAのデフォルトアイコンが使われます。アイコンはWindows付属ペイント簡単に作れますので、自分の開発したソフト用に作っておきましょう。アイコンの簡単な作り方

HTAタグの詳しい情報はMSDNにありますので参考に。http://msdn.microsoft.com/library/default.asp?url=/workshop/author/hta/reference/objects/hta.asp

Windowの初期サイズ

悲しいかなAPPLICATIONタグでは細かいWindowサイズが指定できません。これって、ちょっといけず〜と思ってしまいました。基本的には、APPLICATIONタグで指定するのはDHTMLで操作できない部分の属性らしいです。初期サイズを設定するなら、<BODY>タグのonLoadイベントにリサイズ命令を書きます。

 <BODY onLoad="VBScript:Window.ResizeTo 320,240">

ここまで来ると創作意欲が沸きますなぁ・・・。

あとはDHTMLで

DHTML+α殆どのことが可能になります。HTAではFileSystemObjectが利用できるので、入力をテキストファイルに書き出したりとか、色々なことが可能です。結局のところ、IEの機能を使ったローカルアプリケーションですので、コントロールを貼り付けたりしてもいいです。トグルボタンとかスピンボタンとかカレンダーとか・・・。

サンプルアプリ

ちょっとまだ製作途中でショボイですが、HTAのサンプルを載せておきます。(アプリというのもおこがましいのですが)現在(2004.08.25)のところ、ファイル選択してMDBを最適化できる機能をもたせました。ちょっとだけ実用的です。最終的にどのようなアプリになるのか不明・・・。

ファイル選択ダイアログ部をエクセルのダイアログを利用するように作り変えました(2004.01.15)。エクセルが入っていないと動作しません。

適当なファイル名(hoge.hta)などとして保存してからダブルクリックするか、hta02.hta をダウンロードしてください。

 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
 <TITLE>HTA+ADO+MDBでサンプル</TITLE>
 <HTA:APPLICATION
   APPLICATIONNAME = "HTA_ADO_MDB"
   BORDER          = "dialog"
   BORDERSTYLE     = "normal"
   CAPTION         = "yes"
   CONTEXTMENU     = "no"
   ICON            = "htasamp.ico"
   ID              = "oCheck"
   INNERBORDER     = "no"
   MAXIMIZEBUTTON  = "no"
   MINIMIZEBUTTON  = "yes"
   NAVIGABLE       = "yes"
   SCROLL          = "no"
   SCROLLFLAT      = "yes"
   SELECTION       = "no"
   SHOWINTASKBAR   = "yes"
   SINGLEINSTANCE  = "no"
   SYSMENU         = "yes"
   VERSION         = "1.0.2"
   WINDOWSTATE     = "normal"
 />
 <STYLE>
 BODY { background: #CCC; }
 </STYLE>
 <SCRIPT Language="VBScript">
 Option Explicit
 
 ' Application開始時イベント
 Sub Window_OnLoad
     Window.ResizeTo 320,240
     cmdCreateMDB.value = "MDBを作成"
     cmdCompactMDB.value = "MDBの最適化"
     cmdClose.value     = "閉じる"
 End Sub
 
 '作成ボタンのクリックイベント
 Sub cmdCreateMDB_OnClick
     Dim strPath
     strPath = SaveAsFileDialog
 
     Dim objFS
     Set objFS = CreateObject("Scripting.FileSystemObject")
     If objFS.FileExists(strPath) Then
         MsgBox strPath & "は既に存在します。" & vbCrLf & _
                 "違うファイル名で再度トライしてください。", vbCritical
         Exit Sub
     End If
     If strPath <> "" Then
         createMDB strPath
         MsgBox strPath & "を作成しました"
     End If
 End Sub
 
 '最適化ボタンのクリックイベント
 Sub cmdCompactMDB_OnClick
     Dim strPath
     strPath = OpenFileDialog
     If strPath = "" Then Exit Sub
 
     Dim objFS, objFile
     Set objFS = CreateObject("Scripting.FileSystemObject")
     Set objFile = objFS.GetFile(strPath)
     objFile.Name = objFile.Name & ".old.mdb"
     Set objFS = Nothing
 
     Dim strOld, strNew
     Dim objJRO
 
     strOld = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPath & ".old.mdb"
     strNew = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPath
 
     Set objJRO = CreateObject("JRO.JetEngine") 
     objJRO.CompactDatabase strOld, strNew
     Set objJRO = Nothing
 
     MsgBox strPath & "を最適化しました" & vbCrLf & _
            "元ファイルは" & strPath & ".old.mdb にリネームしました"
 End Sub
 
 '閉じるボタンのクリックイベント
 Sub cmdClose_OnClick
     Window.Close
 End Sub
 
 ' MDB作成
 Sub createMDB(strPath)
     Dim objCat
     Set objCat = CreateObject("ADOX.Catalog")
     objCat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPath
     Set objCat = Nothing
 End Sub
 
 ' ファイル名を入力するダイアログ
 Function SaveAsFileDialog
    Dim objExcel
    Set objExcel = CreateObject("Excel.Application")
    Dim File
    File = objExcel.GetSaveAsFilename( _
            "新しいデータベース", "Jet4.0 DB File (*.mdb),*.mdb")
    If File = False Then Exit Function
 
    SaveAsFileDialog = File
    Set objExcel = Nothing
 End Function
 
 ' ファイルを選択するダイアログ
 Function OpenFileDialog
    Dim objExcel
    Set objExcel = CreateObject("Excel.Application")
    Dim File
    File = objExcel.GetOpenFilename( _
            "Jet4.0 DB File (*.mdb),*.mdb", , "ファイルを選択してください")
    If File = False Then Exit Function
 
    OpenFileDialog = File
    Set objExcel = Nothing
 End Function
 
 </SCRIPT>
 </HEAD>
 
 <BODY>
 <P><INPUT type=button name=cmdCreateMDB></P>
 <P><INPUT type=button name=cmdCompactMDB></P>
 <P><INPUT type=button name=cmdClose></P>
 </BODY>
 
 </HTML>
Yesterday Today Total