我正在尝试为一个简单的 hello world 消息框运行 activex 控件。首先我创建了类库,现在有了 dll,然后我创建了 HTML 页面并调用了 activeX 控件:
<!DOCTYPE>
<html>
<head>
<title>DemoActiveX</title>
</head>
<body>
<OBJECT id="DemoActiveX" classid="clsid:400DCE17-4B26-4E59-9A88-AF39E2BE4A55">
</OBJECT>
<script type="text/javascript">
try {
var obj = document.DemoActiveX;
if (obj) {
alert(obj.SayHello());
} else {
alert("Object is not created!");
}
} catch (ex) {
alert("Some error happens, error message is: " + ex.Description);
}
</script>
</body>
</html>
当我在我的机器上尝试它时,我曾经使用 regasm /codebase "dll path" 注册 dll,它工作正常。
当我尝试在另一台机器上运行时出现问题,我按照以下步骤操作:1)我创建了安装项目并添加了 dll 文件。
2)我创建了 .inf 文件并尝试了两个内容:
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
ActiveX.dll=ActiveX.dll
[ActiveX.dll]
file-win32-x86=thiscab
clsid=400DCE17-4B26-4E59-9A88-AF39E2BE4A55
FileVersion=1,0,0,0
注册服务器=是
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Setup Hooks]
install=install
[install]
run=msiexec.exe /package """%EXTRACT_DIR%\DemoActiveXSetup.msi""" /qn
3) 我创建了包含 .inf 和 setup.exe 文件的 .CAB 文件 4) 将 HTML 页面中的对象更改为:
<OBJECT id="DemoActiveX" classid="clsid:400DCE17-4B26-4E59-9A88-AF39E2BE4A55"
codebase="ActiveXCAB.CAB" ></OBJECT>
当我试图在另一台机器上打开页面时,一个请求窗口打开了打开 CAB 的请求,当我按下是时什么也没发生!!!!!!!为什么它不打开 setup.exe 或 msi 文件?顺便说一句,当我手动安装安装文件时,activeX 工作了!