在javascript中使用com組件的簡單實現方法,javascript組件

來源:互聯網
上載者:User

在javascript中使用com組件的簡單實現方法,javascript組件

首先建立一個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> 

以上這篇在javascript中使用com組件的簡單實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援幫客之家。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.