• 在JS中使用COM组件的方法


    首先创建一个COM组件,插入一个双接口Itest,在此接口上实现以下三个方法:

    STDMETHODIMP Ctest::test(void)    //无输入输出参数
    
    {
    
         // TODO: 在此添加实现代码
         MessageBox(NULL,L"test",L"test",MB_OK);
    
     
    
         return S_OK;
    
    }
    
     
    
    STDMETHODIMP Ctest::test1(BSTR a1)   //有一个字符串输入参数
    {
    
         // TODO: 在此添加实现代码
        MessageBox(NULL,a1,L"test",MB_OK);
    
         return S_OK;
    
    }
    
    STDMETHODIMP Ctest::test3(BSTR* a1)  //有一个BSTR* 输出参数
    {
    
         // TODO: 在此添加实现代码
     
    
         MessageBox(NULL,L"test3",L"test",MB_OK);
    
         *a1=::SysAllocString (L"烽火连三月家书抵万金");
    
         return S_OK;
    
    }
    

    COM 中的上述三个方法分别演示无输入输出参数、有一个输入参数、有一个输出参数三种情况。程序编制好后,用regsvr32在系统中注册组件,然后就可以在IE中用javascript调用com 组件的方法了,分两种情况掉用,示例如下:

    1、   直接调用com方法

    建立一个html文本,并输入以下内容:

    <html>
    
    <head>
    
    <title> 调用com组件的方法示例 </title>
    
    <script language="javascript">
    
    document.write("<hr>")
    
    var xml=new ActiveXObject("atldll.test.1")
    
    xml.test()
    
    xml.test1("向com方法中传递参数并调用com方法")              
    
    var str=xml.test3() //从com方法中返回参数
    document.write("str"+str)
    
    document.write(“<hr>”)
    
    </script>
    
    </head>
    
    <body>
    
    演示IE脚本程序中调用com组件的方法
    </body>
    
    </html>
    

    2、   在javascript函数中调用com方法

    建立一个html文本,并输入以下内容:

    <html>
    
    <head>
    
    <title> donghailin active object </title>
    
    <script type="text/javascript">
    
    function displaymessage()
    
    {
    
    document.write("<hr>")
    
    var xml=new ActiveXObject("atldll.test.1")
    
    xml.test()
    
    xml.test1("向com组件传递字符串")              
    
    var str=xml.test3()  //从com组件返回字符串
    document.write("str"+str)
    
    document.write(“<hr>”)
    
    }
    
    </script>
    
    </head>
    
    <body>
    
    <form>
    
    <input type="button" value="Click me!" onclick="displaymessage()" >
    
    </form>
    
    </body>
    
    </html>
    

    注意编写的com组件供其他系统调用,因此输入输出参数字符串应是BSTR类型。

    3、设置com组件的属性的方法

    首先在com组件中设置属性。在接口类中赠加属性变量

    BSTR m_bstr;

    右键单击接口,选择“赠加”-〉“添加属性”在”添加属性向导中“输入属性类型” 中输入参数类型“BSTR” ,“属性名”输入“bstr",向导自动生成属性函数put_bstr和get_bstr,如下:

    STDMETHODIMP Ctest::get_bstr(BSTR* pVal)
    {
     // TODO: 在此添加实现代码
     *pVal=m_bstr;
     return S_OK;
    }
    
    STDMETHODIMP Ctest::put_bstr(BSTR newVal)
    {
     // TODO: 在此添加实现代码
     m_bstr=newVal;
    
     MessageBox(NULL,m_bstr,L"属性测试",MB_OK);
     return S_OK;
    }
    

    下面的代码演示在IE的javascript脚本中设置和获得属性

    <html>
    <head>
    <title> donghailin active object </title>
    
    <script type="text/javascript">
    function displaymessage()
    {
    document.write("<hr>")
    var xml=new ActiveXObject("atldll.test.1")
    xml.bstr="满园春色锁不住一枝红杏出墙来"  //属性是bstr,C++ 中属性设置是put_bstr(...)
    document.write("属性返回值是:"+xml.bstr)  //c++中获得属性值get_bstr(变量指针)
    document.write("<hr>")
    }
    </script>
    
    </head>
    <body>
    <table   align=center   width=50>  
    <form>
    <input type="button" value="Click me!" onclick="displaymessage()" >
    </form>
    </table>
    
    </body>
    </html>
    

      

  • 相关阅读:
    CodeForces 660D Number of Parallelograms
    【POJ 1082】 Calendar Game
    【POJ 2352】 Stars
    【POJ 2481】 Cows
    【POJ 1733】 Parity Game
    【NOI 2002】 银河英雄传说
    【NOI 2015】 程序自动分析
    【POJ 1704】 Georgia and Bob
    【HDU 2176】 取(m堆)石子游戏
    【SDOI 2016】 排列计数
  • 原文地址:https://www.cnblogs.com/fuland/p/3835212.html
Copyright © 2020-2023  润新知