1

Тема: JScript: Вызов встроенных функций VBScript

Для вызова встроенных функций VBScript, которых нет в JScript, можно воспользоваться следующим компонентом, VbsFunction.wsc:

<?xml version='1.0' encoding='windows-1251' standalone='yes'?>
<component id='VbsFunction'>
<registration progid='VbsFunction'/>
<public><method name='vbs' dispid='0'/></public>

<script language='VBScript'><![CDATA[
Sub VbsEval(expression): PutVbsEvalResult(Eval(expression)): End Sub
]]></script>

<script language='JScript'><![CDATA[
var VbsFuncArgs, VbsEvalResult;
function PutVbsEvalResult(X) {VbsEvalResult=X;}
function GetVbsFuncArgs(i) {return VbsFuncArgs[i];}

function vbs(FuncName) {
  return new Function(
    'VbsFuncArgs=arguments;'+
    'var count=VbsFuncArgs.length, Args=new Array(count);'+
    'for (var i=count; --i>=0;) Args[i]="GetVbsFuncArgs("+i+")";'+
    'VbsEval("' +FuncName+ '("+Args+")");'+
    'var retVal=VbsEvalResult;'+
    'VbsFuncArgs=null; VbsEvalResult=null;'+
    'return retVal;'
  );
}
]]></script>
</component>

Пример использования из JScript:

vbs=new ActiveXObject("VbsFunction");
var InputBox=vbs("InputBox");
var X=InputBox("Введите число", "Вызов InputBox из JScript");
vbs("MsgBox")("Вы ввели: "+X);

Автор решения - wisgest.
Конечно, всегда можно воспользоваться и более "традиционным" способом - форматом WSF.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.