在javascript中使用com組件的簡(jiǎn)單實(shí)現(xiàn)方法
首先創(chuàng)建一個(gè)COM組件,插入一個(gè)雙接口Itest,在此接口上實(shí)現(xiàn)以下三個(gè)方法:
STDMETHODIMP Ctest::test(void) //無(wú)輸入輸出參數(shù)
{
// TODO: 在此添加實(shí)現(xiàn)代碼
MessageBox(NULL,L"test",L"test",MB_OK);
return S_OK;
}
STDMETHODIMP Ctest::test1(BSTR a1) //有一個(gè)字符串輸入?yún)?shù)
{
// TODO: 在此添加實(shí)現(xiàn)代碼
MessageBox(NULL,a1,L"test",MB_OK);
return S_OK;
}
STDMETHODIMP Ctest::test3(BSTR* a1) //有一個(gè)BSTR* 輸出參數(shù)
{
// TODO: 在此添加實(shí)現(xiàn)代碼
MessageBox(NULL,L"test3",L"test",MB_OK);
*a1=::SysAllocString (L"烽火連三月家書(shū)抵萬(wàn)金");
return S_OK;
}
COM 中的上述三個(gè)方法分別演示無(wú)輸入輸出參數(shù)、有一個(gè)輸入?yún)?shù)、有一個(gè)輸出參數(shù)三種情況。程序編制好后,用regsvr32在系統(tǒng)中注冊(cè)組件,然后就可以在IE中用javascript調(diào)用com 組件的方法了,分兩種情況掉用,示例如下:
1、直接調(diào)用com方法
建立一個(gè)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方法
建立一個(gè)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>
注意編寫(xiě)的com組件供其他系統(tǒng)調(diào)用,因此輸入輸出參數(shù)字符串應(yīng)是BSTR類型。
3、設(shè)置com組件的屬性的方法
首先在com組件中設(shè)置屬性。在接口類中贈(zèng)加屬性變量
BSTR m_bstr;
右鍵單擊接口,選擇“贈(zèng)加”-〉“添加屬性”在”添加屬性向?qū)е小拜斎雽傩灶愋汀?中輸入?yún)?shù)類型“BSTR” ,“屬性名”輸入“bstr",向?qū)ё詣?dòng)生成屬性函數(shù)put_bstr和get_bstr,如下:
STDMETHODIMP Ctest::get_bstr(BSTR* pVal)
{
// TODO: 在此添加實(shí)現(xiàn)代碼
*pVal=m_bstr;
return S_OK;
}
STDMETHODIMP Ctest::put_bstr(BSTR newVal)
{
// TODO: 在此添加實(shí)現(xiàn)代碼
m_bstr=newVal;
MessageBox(NULL,m_bstr,L"屬性測(cè)試",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="滿園春色鎖不住一枝紅杏出墻來(lái)" //屬性是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組件的簡(jiǎn)單實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
javascript中打印當(dāng)前的時(shí)間實(shí)現(xiàn)思路及代碼
打印當(dāng)前的時(shí)間的方法有很多,在本文為大家詳細(xì)介紹下使用javascript是如何做到的,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下2013-12-12
html的DOM中Event對(duì)象onblur事件用法實(shí)例
這篇文章主要介紹了html的DOM中Event對(duì)象onblur事件用法,實(shí)例分析了onblur事件的使用范圍與對(duì)應(yīng)的javascript使用技巧,需要的朋友可以參考下2015-01-01
JS實(shí)現(xiàn)的簡(jiǎn)潔縱向滑動(dòng)菜單(滑動(dòng)門(mén))效果
這篇文章主要介紹了JS實(shí)現(xiàn)的簡(jiǎn)潔縱向滑動(dòng)菜單(滑動(dòng)門(mén))效果,通過(guò)簡(jiǎn)單的頁(yè)面元素遍歷實(shí)現(xiàn)華東切換的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
JS實(shí)現(xiàn)可關(guān)閉的對(duì)聯(lián)廣告效果代碼
這篇文章主要介紹了JS實(shí)現(xiàn)可關(guān)閉的對(duì)聯(lián)廣告效果代碼,涉及JavaScript針對(duì)滾動(dòng)事件動(dòng)態(tài)設(shè)置頁(yè)面元素的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
JS+CSS實(shí)現(xiàn)一個(gè)氣泡提示框
氣泡提示框牽扯到的技術(shù)有:JS響應(yīng)鼠標(biāo)的事件、純CSS制作三角形,附截圖及示例代碼,感興趣的朋友可以參考下2013-08-08
electron打包dist為可執(zhí)行程序的實(shí)現(xiàn)步驟
這篇文章主要介紹了electron打包dist為可執(zhí)行程序的實(shí)現(xiàn)步驟,文中通過(guò)代碼示例和圖文講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-04-04
JS實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)與刷新的方法匯總
這篇文章主要給大家介紹了關(guān)于JS實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)與刷新的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用JS具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
JavaScript?中從?URL?獲取數(shù)據(jù)的方法
這篇文章主要介紹了在?JavaScript?中從?URL?獲取數(shù)據(jù),我們使用了open函數(shù),將請(qǐng)求方法類型和URL作為參數(shù)傳遞,并調(diào)用XMLHttpRequest()的send()方法,結(jié)合示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
細(xì)說(shuō)webpack源碼之compile流程-rules參數(shù)處理技巧(1)
webpack作為一種流行的打包工具被廣泛應(yīng)用在web項(xiàng)目的前端工程化構(gòu)建中。下面通過(guò)本文給大家介紹webpack源碼之compile流程-rules參數(shù)處理技巧,感興趣的朋友一起看看吧2017-12-12
JS實(shí)現(xiàn)標(biāo)簽頁(yè)效果(配合css)
實(shí)現(xiàn)的效果是當(dāng)鼠標(biāo)移到某一個(gè)標(biāo)簽的時(shí)候,在下面的內(nèi)容區(qū)顯示對(duì)應(yīng)的內(nèi)容,并且相應(yīng)標(biāo)簽的顏色需要改變,這樣的效果是CSS和JS配合實(shí)現(xiàn)的,下面我們就來(lái)看看具體代碼2013-04-04

