您的位置:学习中国 推荐教程 C++C语言 正文
原作者:kuku 添加时间:2007-06-02 原文发表:2007-06-02 人气:6 来源:互联网


在 CPP 中调用 Jscript 中的函数

在 C++ 中调用 Jscript 的函数非常简单, Windows 提供了一个 msscript.ocx 的控件,利用这个控件可以直接操作 Jscript: 执行一段 Jscript 脚本,或者调用指定的函数。我写了一个简单的例子:


l 导入 msscript.ocx 。下面这条指令会在项目目录中生成 msscript.tli 和 msscript.tlh 两个文件,里面有 msscript.ocx 中所有接口的描述和 IID 的定义。

#import "msscript.ocx" no_namespace

l 声明一个对象。

CComPtr < IScriptControl > m_iScriptControl;

l 创建对象实例

if ( SUCCEEDED ( m_iScriptControl . CoCreateInstance ( __uuidof ( ScriptControl ))))

l 设置语言等属性。

m_iScriptControl -> PutLanguage (L "JScript" );
m_iScriptControl -> PutAllowUI ( VARIANT_FALSE );

l 加入 Jscript 代码。

m_iScriptControl -> AddCode (L "function test(str1, str2) { return str1 + \"-ok-\" + str2; }" );

l 获得函数,这里要说明的是 GetItem 的参数是 1 到 n ,而不是 0 到 n-1 。

CComPtr < IScriptProcedureCollection > aProcedureSet = m_iScriptControl -> GetProcedures ();
long n = aProcedureSet -> GetCount ();
CComPtr < IScriptProcedure > aProcedure = aProcedureSet -> GetItem ( _variant_t ( n ));
_bstr_t strFunction = aProcedure -> GetName ();

l 准备函数参数。

VARIANT va = {0};
va . vt = VT_BSTR ;
n = 2;
SAFEARRAYBOUND bounds [1] = {0};
bounds [0]. cElements = n ;
SAFEARRAY * psa = SafeArrayCreate ( VT_VARIANT , 1, bounds );
long i = 0;
for ( i = 0; i < n ; i ++)
{
va . bstrVal = SysAllocString (L "test" );
SafeArrayPutElement ( psa , & i , & va );
}

l 调用函数。

_variant_t Result = m_iScriptControl -> Run ( strFunction , & psa );

l 释放参数。

 

for ( i = 0; i < n ; i ++)
{
va . bstrVal = SysAllocString (L "test" );
SafeArrayGetElement ( psa , & i , & va );
SysFreeString ( va . bstrVal );
}
SafeArrayDestroy ( psa );

本页地址
相关文章

要求对象产生于Heap之中
C++中要求(或禁止)对象产生于heap中
C/C++ 程序设计员应聘常见面试试题深入剖析
C语言教程第二章: 数据类型、运算符、表达式
C语言教程第二章: 数据类型、运算符、表达式
C语言教程第二章: 数据类型、运算符、表达式
C语言教程第二章: 数据类型、运算符、表达式
C语言教程第二章: 数据类型、运算符、表达式
C语言教程第一章: C语言概论(5)
C语言教程第一章: C语言概论(4)
C++:最强大的.NET语言之对象构造
c语言中的指针专题
C++对象的拷贝与赋值操作
初学者必备:C++经典入门详细教程
C++的救赎 C++开源程序库评话
踏入C++中的雷区——C++内存管理详解
在c++程序中重启自己的一种方法
如何编写异常安全的C++代码
C++程序员必需的修养
设计OutLook风格的工具栏

相关评论


本文章所属分类:首页 推荐教程 C++C语言   C++C语言