{{category JavaScript,nolink}}JScriptのメモとか小技とか… !!!Microsoft JScript *JScript ドキュメント **http://msdn.microsoft.com/ja-jp/library/cc427807.aspx *JScript ユーザーズ ガイド **http://msdn.microsoft.com/ja-jp/library/cc391852.aspx *JScript ランゲージ リファレンス **http://msdn.microsoft.com/ja-jp/library/cc409859.aspx !!!jScriptでいろいろ !!JScript で VBScript の InputBox() を使う (1) Windows スクリプト ファイル (.wsf) を使用して、VBScript 側で InputBox を表示する関数を作成し、それを JScript 側で呼び出して利用する。 {{code Text,4, }} !!JScript で Excel VBA の InputBox() を使う Excel の VBA の InputBox関数を呼び出す。当然だが、Excel が入っていないと使えない。 {{code Text,4, var objExcel = WScript.CreateObject("Excel.Application"); var str = objExcel.InputBox("文字を入力してね"); objExcel.Quit(); if( str == false) { //「キャンセル」が押された時の処理を記述 WScript.Echo("キャンセルが押されました。"); } else { //「OK」が押された時の処理を記述 WScript.Echo("入力文字は「" + str + "」です。"); } }} 記述は簡単。しかし、一時的に Excel が立ち上がる(画面は表示されないがプロセスは作られる)。また、VBAのため、InputBoxのダイアログの形がVBSとは若干ことなる。さらに、タスクバーにタスクが作られないため、最上位に表示されないと他のウインドウを退かす必要がある。 !!JScript で VBScript の InputBox() を使う (2) [Windows Script Control|http://www.microsoft.com/downloads/details.aspx?familyid=151EF63D-23E9-4367-BB25-37310C6222FE&displaylang=ja] を利用して、VBScript の InputBox() を呼び出す。 Windows 2000/XP はすでに入っているが、98/ME/NT では、インストールをする必要がある。 関数内部で、「"」は「""」に、「\r」や「\n」も「chr(10)」や「chr(13)」に VBScript の文法に合わせて変換しているので、呼び出す側は、VBScript を意識することなく JScript の関数として使用することができます。 {{code Text,4, /***** JScript で VBScript の InputBox() 関数を使う関数 *****/ function vbInputBox(){ var scVB, VBarg, fvartype, i; try { scVB = new ActiveXObject("ScriptControl"); } catch(e) { WScript.Echo("ScriptControl がない"); WScript.Quit(); //return(undefined); } VBarg = ''; for (i = 0; i < Math.min(arguments.length, 7); i++){ fvartype = typeof(arguments[i]); if (i > 0){VBarg += ', ';} if (fvartype == 'number' || fvartype == 'object' && arguments[i] instanceof Number){ VBarg += arguments[i].toString(); } else if (fvartype != 'undefined'){ VBarg += '\"' + arguments[i].toString().replace(/[\"]/g, '\"\"') + '\"'; } else if (i < 3 || i == 5){ VBarg += '\"\"'; } } VBarg = VBarg.replace(/[\r\n]+/g, '\" \& $&\"').replace(/[\r]/g, 'Chr\(13\) \& ').replace(/[\n]/g, 'Chr\(10\) \& '); scVB.Language = 'VBScript'; return(scVB.Eval('InputBox\(' + VBarg + '\)')); } }} {{code Text,4, var str = vbInputBox("文字を入力してね"); if( typeof(str) == "undefined" ) { //「キャンセル」が押された時の処理を記述 WScript.Echo("キャンセルが押されました。"); } else { //「OK」が押された時の処理を記述 WScript.Echo("入力文字は「" + str + "」です。"); } }} 参考:[スクリプトの開発 Tips|http://www.sleipnir-wiki.jp/index.php?%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8%A4%CE%B3%AB%C8%AF%20Tips#content_1_7] (タブブラウザ Sleipnir オンラインデータベース)