鱼C论坛

 找回密码
 立即注册
查看: 1539|回复: 0

c++用MSScriptControl和JavaScript交互问题

[复制链接]
发表于 2015-2-8 14:51:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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( i  in a){
    sum += a[i];
  }
  return sum;
}
function fun_array2(a,b){
  var arr =[];
  arr[0]=a;
  arr[1]=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[1024]="";        
        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;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 15:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表