HTAでコマンドライン引数を取得・分割
HTAにコマンドライン引数を渡す
- 送るメニュー(SendTo)にHTAのショートカットを登録する。
- HTAに直接ファイルをドラッグ&ドロップできるようにレジストリを登録する。
HTAでコマンドライン引数を受け取る
HTA:APPLICATION要素に設定したid属性値が、HTA:APPLICATIONオブジェクトを参照するグローバル変数の名前になる。
コマンドライン引数を含んだ文字列は、HTA:APPLICATIONオブジェクトのcommandLineプロパティで得られる。その書式は「"実行中のスクリプト自身のパス" 空白が含まれない引数 "空白が含まれる引数"」といった具合。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <hta:application id="oHTA"></hta:application> </head> <body> <script type="text/jscript"> oHTA.commandLine // => コマンドライン引数を含んだ文字列 </script> </body> </html>
コマンドライン引数を分割する
前述のとおり、commandLineプロパティは実行中のスクリプト自身のパスを含んでいたり、ダブルクォーテーションで囲まれた引数やそうでない引数があったりと、そのままでは扱いにくい。
そこで、commandLineプロパティの文字列から引数のみを抽出し、配列として返す関数を作った。
function splitCml(cml) { var res, reg, mat; reg = /"([^"]+)"|([^ ]+)/g; res = []; while (mat = reg.exec(cml)) res[res.length] = mat[1] || mat[2]; return res.slice(1); }