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