假设第三方的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>