Показать сообщение отдельно
  #5 (permalink)  
Старый 07.02.2009, 14:14
Новичок на форуме
Отправить личное сообщение для Дроздов Посмотреть профиль Найти все сообщения от Дроздов
 
Регистрация: 07.02.2009
Сообщений: 9

сохранить как *.wsf и запускать.
<job id='vbs'>
<script language='VBScript'>
Sub VbsEval(expr): PutResult(Eval(expr)): End Sub
</script>

<script language='JScript'>
var VB = {}; 
var VB = { func: function(func){ return VBS(func);}}
function VBS(func) {
 PutResult = function(X) {EvalResult=X;}
 GetArgs = function(i) {return _fArgs[i];}
 this.f = new Function(
    '_fArgs=arguments;'+
    'var cnt = _fArgs.length, args=new Array(cnt);'+
    'for (var i=cnt; --i>=0;) args[i]="GetArgs("+ i +")";'+
    'VbsEval("' +func+ '("+args+")");'+
    'var retVal=EvalResult;'+
    '_fArgs=null; EvalResult=null;'+
    'return retVal;'
  );
  return f;
}

// здесь по-всякому их обозвать...
VB.StrReverse = VBS("StrReverse");
VB.Int = VBS("Int");
var InputBox = VBS('InputBox');

var reverse = VBS("StrReverse");
var x=InputBox("сюда не целое x", "вызвать VB InputBox из JScript");
VBS("MsgBox")("x = "+x+'\n'+reverse(x)+'\n'+VB.Int(x), 0,"VBS" ); //а можно и сразу прямо так, если функция в скрипте есть
</script>
</job>


но требуется -- объект лежит в библиотеке vbs.wsc (чтоб подтянуть как activX к любому js) и чтоб не заряжая его заранее всеми возможными vba функциями можно было достать их из объекта так: VBA.Int(x);, а не так как теперь: VBA.func("Int")(x);
вот тут мой мозг закончился...
Ответить с цитированием