zoukankan      html  css  js  c++  java
  • 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 =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

  • 相关阅读:
    NYOJ题目916胖子小的百宝袋
    NYOJ题目893十字架
    NYOJ题目874签到
    设计模式之Singleton
    Elo rating system 模拟
    JDBC之SqlHelper
    《Thinking in Java》十四章类型信息_习题解
    NYOJ题目842整除的尾数
    NYOJ题目840吃花生
    NYOJ题目839合并
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470309.html
Copyright © 2011-2022 走看看