您的位置:首页 > 编程语言 > C语言/C++

用VC++生成接口的COleDispatchDriver包装类来调用COM组件

2011-02-19 21:44 471 查看
一般地,可以使用CoCreateInstance来调用COM组件。但对于实现了IDispatch接口的COM组件,还有更容易的方法——用VC++自动生成接口的COleDispatchDriver包装类来调用COM组件。

举例说明:在VC++中执行脚本语句,比如VBScript语句。

系统提供了一个控件:C:\WINDOWS\system32\msscript.ocx,它提供了一个叫做IScriptControl的接口,通过它,我们就可以执行脚本语句了。

1.用VC++自动创建包装类

用VC++建立一个支持MFC的工程,添加一个类,选择“类型库中的MFC类”,再选择msscript.ocx文件,并将IScriptControl添加到右栏,如下图:





点击完成后即可生成CScriptControl包装类。

2.使用生成的类

[align=left] //初始化COM库[/align]
[align=left] CoInitialize(NULL);[/align]
[align=left] [/align]
[align=left] //创建MSScriptControl.ScriptControl实例[/align]
[align=left] //这个名称(ProgId)可以通过VC++目录下的小工具oleview得到。[/align]
[align=left] CScriptControl js;[/align]
[align=left] if (js.CreateDispatch("MSScriptControl.ScriptControl"))[/align]
[align=left] {[/align]
[align=left] //设置当前使用的脚本语言[/align]
[align=left] js.put_Language("JScript");[/align]
[align=left] //执行语句,执行完成后var中即包含了表达式的结果[/align]
[align=left] VARIANT var=js.Eval("1.234+5.31");[/align]
[align=left] //释放接口[/align]
[align=left] js.ReleaseDispatch();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] //关闭COM库[/align]
CoUninitialize();

3.本例的其他用处

可以很方便将这点代码封装为一个表达式计算器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐