在javascript中使用com組件的簡單實現(xiàn)方法
首先創(chuàng)建一個COM組件,插入一個雙接口Itest,在此接口上實現(xiàn)以下三個方法:
STDMETHODIMP Ctest::test(void) //無輸入輸出參數(shù)
{
// TODO: 在此添加實現(xiàn)代碼
MessageBox(NULL,L"test",L"test",MB_OK);
return S_OK;
}
STDMETHODIMP Ctest::test1(BSTR a1) //有一個字符串輸入?yún)?shù)
{
// TODO: 在此添加實現(xiàn)代碼
MessageBox(NULL,a1,L"test",MB_OK);
return S_OK;
}
STDMETHODIMP Ctest::test3(BSTR* a1) //有一個BSTR* 輸出參數(shù)
{
// TODO: 在此添加實現(xiàn)代碼
MessageBox(NULL,L"test3",L"test",MB_OK);
*a1=::SysAllocString (L"烽火連三月家書抵萬金");
return S_OK;
}
COM 中的上述三個方法分別演示無輸入輸出參數(shù)、有一個輸入?yún)?shù)、有一個輸出參數(shù)三種情況。程序編制好后,用regsvr32在系統(tǒng)中注冊組件,然后就可以在IE中用javascript調(diào)用com 組件的方法了,分兩種情況掉用,示例如下:
1、直接調(diào)用com方法
建立一個html文本,并輸入以下內(nèi)容:
<html>
<head>
<title> 調(diào)用com組件的方法示例 </title>
<script language="javascript">
document.write("<hr>")
var xml=new ActiveXObject("atldll.test.1")
xml.test()
xml.test1("向com方法中傳遞參數(shù)并調(diào)用com方法")
var str=xml.test3() //從com方法中返回參數(shù)
document.write("str"+str)
document.write(“<hr>”)
</script>
</head>
<body>
演示IE腳本程序中調(diào)用com組件的方法
</body>
</html>
2、在javascript函數(shù)中調(diào)用com方法
建立一個html文本,并輸入以下內(nèi)容:
<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組件供其他系統(tǒng)調(diào)用,因此輸入輸出參數(shù)字符串應(yīng)是BSTR類型。
3、設(shè)置com組件的屬性的方法
首先在com組件中設(shè)置屬性。在接口類中贈加屬性變量
BSTR m_bstr;
右鍵單擊接口,選擇“贈加”-〉“添加屬性”在”添加屬性向?qū)е小拜斎雽傩灶愋汀?中輸入?yún)?shù)類型“BSTR” ,“屬性名”輸入“bstr",向?qū)ё詣由蓪傩院瘮?shù)put_bstr和get_bstr,如下:
STDMETHODIMP Ctest::get_bstr(BSTR* pVal)
{
// TODO: 在此添加實現(xiàn)代碼
*pVal=m_bstr;
return S_OK;
}
STDMETHODIMP Ctest::put_bstr(BSTR newVal)
{
// TODO: 在此添加實現(xiàn)代碼
m_bstr=newVal;
MessageBox(NULL,m_bstr,L"屬性測試",MB_OK);
return S_OK;
}
下面的代碼演示在IE的javascript腳本中設(shè)置和獲得屬性
<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++ 中屬性設(shè)置是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組件的簡單實現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript對象學(xué)習(xí)小結(jié)
JavaScript 中的所有事物都是對象:字符串、數(shù)值、數(shù)組、函數(shù).幾乎用到的每個js都離不開它的js對象。此外,JavaScript 允許自定義對象,下面跟著小編學(xué)習(xí)javascript對象學(xué)習(xí)小結(jié),需要的朋友可以參考下2015-09-09
關(guān)于JS中的apply,call,bind的深入解析
下面小編就為大家?guī)硪黄P(guān)于JS中的apply,call,bind的深入解析。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-04-04

