一般地,可以使用CoCreateInstance来调用COM组件。但对于实现了IDispatch接口的COM组件,还有更容易的方法——用VC++自动生成接口的COleDispatchDriver包装类来调用COM组件。
 
举例说明:在VC++中执行脚本语句,比如VBScript语句。
 
系统提供了一个控件:C:\WINDOWS\system32\msscript.ocx,它提供了一个叫做IScriptControl的接口,通过它,我们就可以执行脚本语句了。
 
1.用VC++自动创建包装类用VC++建立一个支持MFC的工程,添加一个类,选择“类型库中的MFC类”,再选择msscript.ocx文件,并将IScriptControl添加到右栏.
点击完成后即可生成CScriptControl包装类。//初始化COM库
CoInitialize(NULL);//创建MSScriptControl.ScriptControl实例
//这个名称(ProgId)可以通过VC++目录下的小工具oleview得到。
CScriptControl js;
if (js.CreateDispatch("MSScriptControl.ScriptControl"))
{
//设置当前使用的脚本语言
js.put_Language("JScript");
//执行语句,执行完成后var中即包含了表达式的结果
VARIANT var=js.Eval("1.234+5.31");
//释放接口
js.ReleaseDispatch();
}

//关闭COM库
CoUninitialize();

解决方案 »

  1.   

    我在公司写过一个解释执行VBScript脚本的模块,我封装成了一个DLL,不过不能发出来。给你思路吧,请见谅。
       vc程序中加入脚本语言的过程
     其原理如下
     1. 首先使用CoCreateInstance()创建某种脚本语言(javascript,vbscript)的引擎,
        获得某种语言的脚本引擎的接口IActiveScript。
     
     2. 实现回调站点接口IActiveScriptSite通过IActiveScript->SetScriptSite()交由脚本引擎回调,
        在site中可以取得引擎的状态信息,并提供用户的自定义变量的自动化对象。
       
     3. 通过IActiveScript->QueryInterface()取得IActiveScriptParse接口,
        IActiveScriptParse用于解释执行用户的脚本代码。