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)
参考になりました。
var VbsFunction = function(){
var mss = new ActiveXObject(`MSScriptControl.ScriptControl`);
mss.Language = `VBScript`;
str = arguments[0] + `(`;
for(var i=1; i
var VbsFunction = function(){
var mss = new ActiveXObject(`MSScriptControl.ScriptControl`);
mss.Language = `VBScript`;
str = arguments[0] + `(`;
for(var i=1; i