liehuo 发表于 2015-2-8 14:51:22

c++用MSScriptControl和JavaScript交互问题

本帖最后由 liehuo 于 2015-2-8 14:52 编辑

最近学习MSScriptControl组件和JavaScript脚本交互的知识,调用简单JavaScript函数可以成功,但是像复杂的函数就不会了,比如JavaScript函数返回数组和对象的函数就不知道如何传入参数和接收返回值了?下面几个JavaScript函数,我就会调用第一个add函数,其它3个就不会了,网上查了很多,发现都是用 IDispatch接口实现的,我感觉MSScriptControl组件不错,可是不知道怎么使用,谁能帮我解决其它3个函数的传参调用?给出相应代码?<script type="text/javascript">
function add(x,y){
return x+y;
}
function fun_array1(a){
var sum = 0;
for( iin a){
    sum += a;
}
return sum;
}
function fun_array2(a,b){
var arr =[];
arr=a;
arr=b;
return arr;
}
function fun_obj1(a,b){
var obj =new Object;
obj.num1=a;
obj.num2=b;
return obj;
}
</script>我第一个JavaScript函数的调用代码:
#include "stdafx.h"
#include <fstream>
#include <string>
#import"C:/windows/system32/msscript.ocx" no_namespace
using namespace std;
int main(int argc, char* argv[])
{
      CoInitialize(NULL);
      IScriptControlPtr pScript(__uuidof(ScriptControl));
      pScript->Language="JavaScript";
      pScript->AllowUI = TRUE;
      fstream file;      
      file.open( "two.js" );//two.js里就是上面的JavaScript函数,去掉JavaScript标签了
      string   strFileContent, strTemp;
      char szTemp="";      
      do
      {      
                file.read(szTemp, 1024);      
                strFileContent.append( szTemp );      
                memset( szTemp, 0, 1024 );      
      }while ( !file.fail() );
      file.close();

      pScript->AddCode(strFileContent.c_str());
      VARIANT num;
      num.vt=VT_I4;
      num= pScript->Eval("add(4,66)");
      int iRet = num.intVal;
      printf("%d\n",iRet);
      pScript.Release();
      CoUninitialize();
      return 0;
}

页: [1]
查看完整版本: c++用MSScriptControl和JavaScript交互问题