JScriptで、InputBoxとMsgBoxを使う。
2010年7月19日
一つ前の記事で、「VBScriptのInputBoxは便利」と書いたが、改めてJScriptにはこれ相当の機能が無いことを思い出した。MsgBox相当は、WScript.Echo()である程度の代用が効くが、InputBoxに似た機能は無い。しかし、以前書いたように、ScriptControlを使えばVBScriptの関数をJScriptから呼び出すことができる。
以前書いたコードはInputBoxに特化したもので、しかも汎用性が無かった。汎用性を持たせたのが、次のスクリプト。
この20行ほどのコードで定義されたVbsFunction()を使えば、VBScriptのすべての関数を、JScriptから利用することができる。利用方法は、最後の2行を参照。InputBoxとMsgBoxの2つが使えるように、記述してある。
以前書いたコードはInputBoxに特化したもので、しかも汎用性が無かった。汎用性を持たせたのが、次のスクリプト。
var VbsFunction=function(func){ return function(){ var args=Array(); args[0]=func; for (var i=0;i<arguments.length;i++) args[i+1]=arguments[i]; return VbsFunction.run.apply(null,args); }; } VbsFunction.run=function(){ var script="VbsFunction.sc.run('func"+(arguments.length-1)+"'"; for (var i=0;i<arguments.length;i++) script+=",arguments["+i+"]"; return eval(script+");"); } VbsFunction.sc=WScript.CreateObject("MSScriptControl.ScriptControl"); VbsFunction.sc.language="vbscript"; for (var i=0;i<10;i++) { var script=" function func"+i+"(p0"; for (var j=1;j<=i;j++) script+=",p"+j; script+=")\r\n func"+i+'=eval(p0+"('; for (var j=1;j<=i;j++) { if (1<j) script+=","; script+="p"+j; } VbsFunction.sc.addcode(script+")\")\r\n end function\r\n"); } var InputBox=VbsFunction("InputBox"); var MsgBox=VbsFunction("MsgBox");(10/07/20 改定)
この20行ほどのコードで定義されたVbsFunction()を使えば、VBScriptのすべての関数を、JScriptから利用することができる。利用方法は、最後の2行を参照。InputBoxとMsgBoxの2つが使えるように、記述してある。
コメント
zukki- (2012年6月9日 19:00:25)
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
参考になりました。
var VbsFunction = function(){
var mss = new ActiveXObject(`MSScriptControl.ScriptControl`);
mss.Language = `VBScript`;
str = arguments[0] + `(`;
for(var i=1; i