鱼C论坛

 找回密码
 立即注册
查看: 1787|回复: 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个函数的传参调用?给出相应代码?
  1. <script type="text/javascript">
  2. function add(x,y){
  3. return x+y;
  4. }
  5. function fun_array1(a){
  6.   var sum = 0;
  7.   for( i  in a){
  8.     sum += a[i];
  9.   }
  10.   return sum;
  11. }
  12. function fun_array2(a,b){
  13.   var arr =[];
  14.   arr[0]=a;
  15.   arr[1]=b;
  16.   return arr;
  17. }
  18. function fun_obj1(a,b){
  19.   var obj =new Object;
  20.   obj.num1=a;
  21.   obj.num2=b;
  22.   return obj;
  23. }
  24. </script>
复制代码
我第一个JavaScript函数的调用代码:
  1. #include "stdafx.h"
  2. #include <fstream>
  3. #include <string>
  4. #import  "C:/windows/system32/msscript.ocx" no_namespace
  5. using namespace std;
  6. int main(int argc, char* argv[])
  7. {
  8.         CoInitialize(NULL);
  9.         IScriptControlPtr pScript(__uuidof(ScriptControl));
  10.         pScript->Language="JavaScript";
  11.         pScript->AllowUI = TRUE;
  12.         fstream file;        
  13.         file.open( "two.js" );//two.js里就是上面的JavaScript函数,去掉JavaScript标签了
  14.         string   strFileContent, strTemp;
  15.         char szTemp[1024]="";        
  16.         do
  17.         {        
  18.                 file.read(szTemp, 1024);        
  19.                 strFileContent.append( szTemp );        
  20.                 memset( szTemp, 0, 1024 );        
  21.         }while ( !file.fail() );
  22.         file.close();

  23.         pScript->AddCode(strFileContent.c_str());
  24.         VARIANT num;
  25.         num.vt=VT_I4;
  26.         num= pScript->Eval("add(4,66)");
  27.         int iRet = num.intVal;
  28.         printf("%d\n",iRet);
  29.         pScript.Release();
  30.         CoUninitialize();
  31.         return 0;
  32. }
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-18 22:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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