会社用PCなど制約のある環境では、アプリのインストールが制限されていることがあるが、
そんな環境下でも自作ツールを利用したい場合がある。
※他人にシェルをそのまま渡すよりはGUIのほうが喜ばれますよね。
その解決策の一つが、HTA(HTMLアプリケーション)を利用する方法だ。
HTAは、ほとんどの環境でメモ帳を使って簡単なデスクトップアプリを作成することが出来る。。
htmlやcss、jsを使うため、知識の流用が効きやすいこともメリットの一つだ。
この記事では、HTAの説明から、簡単なアプリ作成のチュートリアルまでを記載する。。
HTAとは
HTA(HTMLアプリケーション)は、Windows環境で利用できる軽量なアプリケーション形式だ。
HTAは、HTML、CSS、JavaScriptなどのWeb技術を使用して、
デスクトップ上で実行されるアプリケーションを作成することができる。
通常のWebアプリケーションと異なり、HTAはブラウザを介さずに直接デスクトップ上で動作する。
そのため、インストールや管理の制限のある環境でも利用できる便利な解決策となる。
Edge(IE)がインストールされている通常の環境でしたら、特に追加で必要なものはございません。
HTAのチュートリアル
まずは.htaファイルを作成してみよう。
HTAを使ったアプリの作成は非常に簡単だ。
拡張子.htaでコードを保存するだけで、そのまま使用することが出来る。
.htaファイルをダブルクリックで起動する。
コンパイルなど面倒な工程を踏まずに、すぐに利用することが可能なことは大きな利点だ。
早速、下記コードをテキストファイルに貼り付け拡張子.htaで保存してみる。
<html>
<head>
<title>Sample</title>
<script language="VBScript">
Sub ShowMsgBox
msgbox("Hello World")
End Sub
</script>
</head>
<body>
<input type="button" value="ボタン" onclick="ShowMsgBox()">
</body>
</html>
ボタンを押下すると、HelloWorldとメッセージボックスが表示される
シンプルなアプリケーションが出来た。
テキストファイルを適切な拡張子で保存するだけで利用出来るhtaの手軽さを
実感できたと思う。
また、ここで5行目~9行目の補足を行う。( <script language=”VBScript”>から始まる部分)
こちらではVBScriptと呼ばれるスクリプト言語によって、
メッセージボックスを表示する内容を記載する。
htaでは、javascriptだけでなくVBSもスクリプト言語として採用することが出来る。
ローカルのファイルにアクセスする。
htmlファイルにも同様にjavascriptを記載可能だ。
htaを用いたアプリが通常のブラウザで開くhtmlと異なる点は、
ローカルにあるファイルにアクセス出来ることだ。
次のコードはボタンをクリックすることで、本日の日付が入ったtxtファイルを作成するものだ。
7行目のフォルダパスにtxtファイルが作成されますので、適宜書き換えてください。
<html>
<head>
<title>Sample2</title>
<script language="VBScript">
Sub CreateTextFile()
'フォルダのパスを設定
folderPath = "C:\Users\<ユーザー名>\Documents\"
' 本日の日付を取得
currentDate = FormatDateTime(Now, 2)
formattedDate = Mid(Replace(currentDate, "/", ""),3,6)
' txtファイルを作成
Set fso = CreateObject("Scripting.FileSystemObject")
filePath = folderPath & formattedDate & "_議事録.txt"
Set file = fso.CreateTextFile(filePath, True)
file.close
End Sub
</script>
</head>
<body>
<input type="button" value="議事録の作成" onclick="CreateTextFile()">
</body>
</html>
htaを用いてローカルのファイルにアクセスすることが実感できたと思う。
コマンドを実行する。
htaファイルでは、コマンドを実行することも可能だ。
ひとつ前のファイルの19行目に、以下のコードを挿入してみましょう。
notepad ファイル名 は、デフォルトのテキストエディタで、
ファイル名で指定しているファイルを開くコマンドになる。
下記の「”notepad.exe ” & filePath」を書き換えることで、
任意のコマンドを実行可能だ。
' テキストエディタでファイルを開く
Set shell = CreateObject("WScript.Shell")
shell.Run "notepad.exe " & filePath
全体は、以下の通り。
<html>
<head>
<title>Sample2</title>
<script language="VBScript">
Sub CreateTextFile()
'フォルダのパスを設定
folderPath = "C:\Users\<ユーザー名>\Documents\"
' 本日の日付を取得
currentDate = FormatDateTime(Now, 2)
formattedDate = Mid(Replace(currentDate, "/", ""),3,6)
' txtファイルを作成
Set fso = CreateObject("Scripting.FileSystemObject")
filePath = folderPath & formattedDate & "_議事録.txt"
Set file = fso.CreateTextFile(filePath, True)
file.close
' テキストエディタでファイルを開く
Set shell = CreateObject("WScript.Shell")
shell.Run "notepad.exe " & filePath
End Sub
</script>
</head>
<body>
<input type="button" value="議事録の作成" onclick="CreateTextFile()">
</body>
</html>
実行すると、作成したファイルがメモ帳などで開かれたと思う。
このように、コマンドの実行をGUIで行うことも可能だ。