JS调用ATL COM中的C++接口的做法
来源:互联网 发布:慧博智能策略终端 mac 编辑:程序博客网 时间:2024/04/29 16:50
作者:朱金灿
来源:http://blog.csdn.net/clever101
首先创建一个ATL COM对象,其过程参考下面文章:
C#调用ATLCOM
其实给COM对象添加方法和属性可以不用界面的繁琐做法,只需要在idl文件和代码中添加下面代码(这里假设你的接口名为IImportCode):
interface IImportCode : IDispatch{[propget,id(1),helpstring("属性AddResult")]HRESULT AddResult([out,retval] LONG* lpRet);[id(2), helpstring("方法Add")] HRESULT Add([in] LONG Num1, [in] LONG Num2);};
在ATL类对象CImportCode中添加如下代码:
public:STDMETHOD(Add)(LONG Num1, LONG Num2);STDMETHOD(get_AddResult)(LONG* lpRet);private:LONG m_lRet; // 用于保存加法运算结果STDMETHODIMP CImportCode::Add( LONG Num1, LONG Num2){ m_lRet = Num1 + Num2;return S_OK;}STDMETHODIMP CImportCode::get_AddResult( LONG* lpRet ){ * lpRet = m_lRet;return S_OK;}
值得注意的是添加的属性名为AddResult,其接口参数类型为long*,那么对应的获取属性值得接口为get_AddResult,即get_属性名。
测试的JS代码很简单:
// Create the Add Com object.var AddMethod = new ActiveXObject("DevAssist.ImportCode"); var num1 =100; var num2 =20;// Translate number to text.try{ AddMethod.Add(num1,num2);var objNumber = AddMethod.AddResult; // 获取它的属性值WScript.Echo(objNumber);}catch (e){// Display details about any thrown exceptions.WScript.Echo(e.name + ": " + e.description + " " + e.number);}
参考文献:
1. JS调用ATL DLL
2. NumberSpeller COM-ponent
0 0
- JS调用ATL COM中的C++接口的做法
- 如何用ATL写一个C++的COM组件(C#轻松调用C/C++接口)
- js中调用Atl接口参数返回
- VBS调用ATL编写的COM组件
- win32com调用ATL编写的COM组件
- ATL COM 组件 调用
- C#调用ATL COM
- ATL 调用COM对象
- atl com组件调用
- C#调用ATL COM
- 调用接口时的错误做法
- 看COM/ATL的书,感觉到处都写着接口
- OCX调用ATL COM的DLL的函数的方法
- JavaScript调用ATL COM(二)
- 不同语言之间的调用 - ATL COM方式实现
- 不注册dll调用atl实现的com对象
- c++简单的ATL COM开发和调用实例
- c++简单的ATL COM开发和调用实例
- 面向“接口”编程和面向“实现”编程
- spring mvc3.1.0 日期自动转换
- CSerialPort类定义的消息
- python - sys模块
- apache2.4下载地址
- JS调用ATL COM中的C++接口的做法
- 常规表格多表头查询
- tiny6410裸机实验第0章--------------开发环境的搭建(配置 tftp服务器)
- Linux服务器导入导出SVN项目
- ibatis中配置文件载入错误org.xml.sax.SAXParseException: The string "--" is not permitted
- C#如何判断操作系统位数是32位还是64位
- Android学习----响应被父控件拦截的touch event
- 整数划分小记
- addObject 添加 不覆盖