1. 程式人生 > >關於ActiveX控制元件開發、js呼叫

關於ActiveX控制元件開發、js呼叫

控制元件製作:

32位控制元件製作

64位控制元件製作

參考:一、建立;二、介面;三、js呼叫 說明:64位控制元件的js呼叫我按上述教程製作,呼叫可以,但是控制元件中沒有文章中說的控制元件中顯示的那行文字,不知道什麼問題,應該不算是太成功。 注意:32位編譯軟體(vs6.0和vs2010預設平臺 )編寫的控制元件,只能在32位IE瀏覽器上使用;64位編譯軟體(vs2010編譯軟體更換為64位)編寫的控制元件只能在64位IE瀏覽器上使用;可能目前已經解決該問題,但是我還沒有找到辦法,所有我目前就這麼認為! 控制元件註冊: 編譯器直接執行除錯,如果沒有報錯就會自動註冊成功; 如果用cmd命令註冊的話: 32位的需要將控和依賴的dll全部拷貝到C:\Windows\System32目錄下,然後shift+滑鼠右鍵點選空白處,選擇在此處開啟命令視窗;輸入regsvr32 ***.ocx
64位的需要將控和依賴的dll全部拷貝到C:\Windows\SysWOW64目錄下,然後shift+滑鼠右鍵點選空白處,選擇在此處開啟命令視窗;輸入regsvr32 ***.ocx如果無報錯,及成功。

js呼叫控制元件:

CLSID的獲取:

我查了網上好多資料,都說註冊成功之後,在登錄檔查詢***.ocx即可找到,但是我建議將找到的每一個CLSID找到,都嘗試一下,因為我就是因為 這個問題和瀏覽器32和64位問題導致搞了一週。。。一般會找到4個不同的CLSID,然後就新建一個html頁面, 加入不知道要呼叫的方法可以用OLE/View先點File然後按下圖,找到自己註冊的ocx控制元件然後開啟,可以找到方法。

html程式碼例子:
<html>
<head>
<title>new page</title>

<script language="javascript" type="text/javascript">
	function testfunc() {
		alert("111");
		var test = document.getelementbyid("devread").test(1, 2);
		alert(test);

	}
</script>
<input type="button" value="呼叫" onclick="testfunc()">

</head>
<body>
	<object id="devread" name="devread"
		classid="clsid:14F625A2-EB18-41ED-A0C7-530F0362C882" width=528
		height=45>
	</object>
<!--64位控制元件使用CLSID為:B48EE35F-ED9B-4660-93AC-068191A298C4-->
</body>
</html>
寫的簡單示例:32位的64位的; 如果不行就將瀏覽器的安全設定,(包括網路和本地以及可信站點)關於ActiveX的設定全部設定為啟用或提示!