马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
}
|