您的位置:首页 > Web前端 > HTML

experiment : 用HTML调用第三方无文档说明的OCX

2012-10-21 17:09 435 查看
假设第三方的ocx已经到手, 我从codeproject上下载了一个人家编译好的ocx.
http://www.codeproject.com/Articles/1384/Hex-Editor-OCX-Control
注册控件 : regsvr32.exe HexEdit.ocx

@note : 如果不想用了, 反注册控件 : regsvr32.exe /u HexEdit.ocx

用OleViewer查找控件classId, 还是用工具看方便, 靠谱.

OleViewer是VS系列自带的工具, 我上传了一份到 http://download.csdn.net/detail/lostspeed/4670549
Windows非C++程序员 可以去下载.

vs2005自带的小工具, oleviewer, depends, errlook, spy++, guidgen, tstcon32 etc.

对于在没有安装vs编译环境的计算机上找问题, 有这些小工具, 还是很有帮助.

我今天用的是OleViewer, 在vs6, vs2003, vs2005中都有,

但是vs2008, vs2010就没有OleViewer, 也许工具改了名字?

工具路径在安装好的vs路径下的位置如下, 如果是懒汉, 可以直接全盘搜索"OleView*.*"

D:\Program Files (x86)\Microsoft SDK\Bin

D:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Common7\Tools

D:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Common7\Tools\Bin

D:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\Bin



查看控件接口定义和接口参数



可以看到这个控件有2个方法





这样, 我们就可以根据控件定义的具体方法, 参数, 来调用控件(从EXE中, 从HTML中)

HTML代码中需要控件的CLSID, 用OleViewer拷贝ClsId到剪贴板



测试过的HTML网页代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<title>
		test by LostSpeed
	</title>

	<SCRIPT LANGUAGE="VBScript">
	<!--
	
		Function CreateVBArray()
			Dim MyVbArray(3)
			MyVbArray(0) = 1
			MyVbArray(1) = 3
			MyVbArray(2) = 5
			
			CreateVBArray = MyVbArray
		End Function
	
	-->
	</SCRIPT>

	<script type="text/javascript">

		function fn_test_ocx()
		{
			var obj;
			
			var varArray;
			var varData;
			
			obj = document.getElementById('HexEditOcx');
    	
    	/// 方法1
    	obj.AboutBox();	///< 这个无参方法调用正确
    	
    	/// 方法2
    	varData = CreateVBArray();
    	
    	/// 控件方法原始定义: SCODE SetData(VARIANT* pData, long dwStartAddr);
    	obj.SetData(varData[0], 3);	///< 执行后, 网页显示类型不匹配, 不去深究了. 和这个专题无关
		};

	</script>
		
	<body>
		<input type="button" onclick="fn_test_ocx()" value="TestOcx"/>
		<object id="HexEditOcx" classid="clsid:2E93307E-777D-49E4-886A-D5B04470796A" codebase="HexEdit.ocx#version=1,0"></object>
	</body>
	
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐