网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.C++设计模式之Factory Method.
.制作固定大小的Form.
.C++箴言:谨慎使用私有继承.
.C语言库函数.
.关于怎么学习API.
.Taglib 原理和实现之支持El表达式.
.C++未来断想.
.C语言库函数 (A类字母).
.VC命名管道通信的实现.
.C语言表达式.
.C++Builder中实现控件数组的功能.
.程序员眼中的qmail(qmail源代码分.
.根据接受的数字在控制台打印出各.
.C语言库函数 (B类字母).
.CB设置环境选项设置.
.C++中数组和指针类型的关系.
.C语言阴阳历算法.
.字节对齐.
.C语言程序设计基础讲座之指针的慨.
.C语言入门之循环结构.

在CPP中调用Jscript中的函数

发表日期:2008-3-8


在 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 );
原文地址:http://dev.csdn.net/author/absurd/7c6ea0f7f67044eeba924a98278a477a.Html
上一篇:小心C++编译器给我们带来的麻烦 人气:595
下一篇:C/C++中枚举类型(enum)的入门教程 人气:613
浏览全部C/C++的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐