在CPP中调用Jscript中的函数

转载 2007年09月29日 18:05:00
在CPP中调用Jscript中的函数 - c/c++ - CSDN技术中心
在CPP中调用Jscript中的函数发表日期:2006-6-12
更新日期:2006-6-12
作者文章阅读次数:2572源自:李先静 (个人网站) 标签:c/c++
您认为本文应该得 12345 共有5人参与打分打印|收藏|讨论|投诉7c6ea0f7-f670-44ee-ba92-4a98278a477a
在CPP中调用Jscript中的函数
在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-&gt;PutLanguage(L"JScript");
m_iScriptControl-&gt;PutAllowUI(VARIANT_FALSE);
l 加入Jscript代码。
m_iScriptControl-&gt;AddCode(L"function test(str1, str2) { return str1 + /"-ok-/" + str2; }");
l 获得函数,这里要说明的是GetItem的参数是1到n,而不是0到n-1。
CComPtr&lt;IScriptProcedureCollection&gt; aProcedureSet = m_iScriptControl-&gt;GetProcedures();
long n = aProcedureSet-&gt;GetCount();
CComPtr&lt;IScriptProcedure&gt; aProcedure = aProcedureSet-&gt;GetItem(_variant_t(n));
_bstr_t strFunction = aProcedure-&gt;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 &lt; n; i++) &lt;br &gt; {
va.bstrVal = SysAllocString(L"test");
SafeArrayPutElement(psa, &i, &amp;va);
}
l 调用函数。
_variant_t Result = m_iScriptControl-&gt;Run(strFunction, &amp;psa);
l 释放参数。
for(i = 0; i &lt; n; i++)
{
va.bstrVal = SysAllocString(L"test");
SafeArrayGetElement(psa, &amp;i, &amp;va);
SysFreeString(va.bstrVal);
}
SafeArrayDestroy(psa);
您认为本文应该得 12345 共有5人参与打分打印|收藏|讨论|投诉7c6ea0f7-f670-44ee-ba92-4a98278a477a
Only those who attempt the absurd can achieve the impossible
本文转自
http://dev.csdn.net/author/absurd/7c6ea0f7f67044eeba924a98278a477a.html
标签词:
调用 jscript psa 控件 bounds test 参数 cpp aprocedureset long 

在CPP中调用Jscript中的函数

 在CPP中调用Jscript中的函数 在C++中调用Jscript的函数非常简单,Windows提供了一个msscript.ocx的控件,利用这个控件可以直接操作Jscript: 执行一段Jscri...
  • lsm307742191
  • lsm307742191
  • 2009年03月08日 15:31
  • 470

在.c文件中调用c++定义的函数

问题描述:用c语言写的程序
  • wang11234514
  • wang11234514
  • 2014年04月19日 16:57
  • 2700

如何在一个cpp中调用另一个cpp中的类?

解决方案:新建一个同名头文件,将这个cpp中的类的声明放在头文件中,在这个cpp以及要调用的cpp中include这个头文件即可。 思路来源与原理: 在面向对象的程序开发中,一般做法是将类的声...
  • huhang600
  • huhang600
  • 2015年04月06日 18:42
  • 7612

cpp——类——析构函数

概述 析构函数特点: 函数名为“~类名”,用来标记和识别析构函数 没有返回值,析构函数是对自身的销毁行为,返回值无意义,因为没有返回值的接收者 形参列表为空,所以析构函数没有重载,唯一的 构造函数V...
  • mardax
  • mardax
  • 2017年02月13日 15:49
  • 341

关于Qt 两个.cpp文件相互调用各自的函数

最近在用Qt 编写一个项目的界面,想再两个.cpp文件相互调用彼此的函数 一种方法就是connect函数,在一个文件中写信号函数,在另一个文件中写槽函数,注意connect函数要放在发送信号之前。第二...
  • zhulichen
  • zhulichen
  • 2016年05月30日 10:33
  • 4284

C++ 保存在两个cpp文件中函数,怎样声明才能互相调用?

主函数所在cpp: #include "menu_1.cpp" #include "menu_2.cpp" void main(){ char choice; do{ choice=_ge...
  • educast
  • educast
  • 2012年07月25日 11:30
  • 8660

在头.h写函数实现体和在cpp中写实现体的区别

在头.h写函数实现体和在cpp中写实现体的区别: 其实区别就是一句话: 在.h中写成员函数的实现体就则该函数就是内联函数,在.cpp中写实现体就是普通成员函数。   ****声明内联函...
  • CHF_VIP
  • CHF_VIP
  • 2012年12月09日 14:42
  • 1682

JScript中的事件函数

  JScript/JavaScript的参考文档甚少,也不是很详细,很多语法也是一知半解,今天在写事件函数时碰到了一个问题,现讨论如下。  众所周知,在处理HTML元素的事件时可以有多种方法写代码:...
  • lilei_jn
  • lilei_jn
  • 2005年09月20日 16:13
  • 1198

C++程序调用C函数

这种需求很多,又因为C++和C是两种完全不同的编译链接处理方式,所以要稍加处理.总结大致有两大类实现方法.文中给出的是完整的,具体的,但又最基本最简单的实现,至于理论性的东西在网上很容易搜索的到. 一...
  • ustcgy
  • ustcgy
  • 2009年12月23日 15:41
  • 9375

Qt中一个.cpp类的函数调用另一个.cpp中类的函数的方法

Qt 下面经常会用到一个函数调用的时候会调用到另一个函数,如果这两个函数在两个.cpp文件中,那么应该怎么调用呢? 假设在B类点击一个按钮会调用A类的一个函数,实际上只需要: 一. 在B的构造函数...
  • hanzhen7541
  • hanzhen7541
  • 2017年10月17日 14:14
  • 776
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在CPP中调用Jscript中的函数
举报原因:
原因补充:

(最多只允许输入30个字)