JS调用ATL COM中的C++接口的做法

               

作者:朱金灿

来源: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 =100var 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

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

猜你喜欢

转载自blog.csdn.net/gdruhv/article/details/87873940
今日推荐