Idea to Code

アイデアをコードへ
独学でプログラミング関係にいろいろ手を出すサイト

hawk

HTA

引数取得2015/12/30

HTAで実行時の引数を取得してみた。

htaファイルへのショートカットを作成し、
リンク先を「パス 引数」とすることで動作する。

引数は複数指定することもできる。


ショートカットを「パス test こんにちは」と指定した場合、下記のように表示される。

実行イメージ

【課題】
抽出アルゴリズム上、引数に「"hello world"」のように、
ダブルクォーテーションと半角スペースを混ぜたものはを組み合わせたものは使用できない。

param.hta
<html>
  <head>
    <meta charset="UTF-8">
    <title>コマンドライン引数取得</title>
    <HTA:APPLICATION
      ID="objHTA"
      SINGLEINSTANCE="yes"
    >
    <script Language="VBScript">
      Sub Window_onLoad
        full_str = objHTA.commandLine  'コマンドラインの文字列取得
        str_start = 1    'パスの先頭
        str_end = InStr(2, full_str, """")  'パスの末尾
        str_end = str_end + 1  'パスの直後のスペース分加算

        m = Mid(full_str, str_start, str_end)  'パス部分を取得
        param_str = replace(full_str, m, "")  'パス部分を削除

        params_arr = Split(param_str, " ")  '引数部分を半角スペースで分離

        result = ""  '結果を初期化
        For i=0 To Ubound(params_arr)  '引数の数だけ繰り返す
          result = result & vbCr & "引数" & i+1 & ":" & params_arr(i)  '結果に追加
        Next
        MsgBox result  '結果を表示
      End Sub
    </script>
  </head>
  <body>
  </body>
</html>