描述:
Hi,
大家好!
本人用MFC开发了一个OCX控件,写了简单的网页测试代码,在自己的电脑上是可以正常显示并起作用的.
可是,在同事的电脑上,打开同一个网页,显示的却是一个白色的框框和一个红色的小叉.初步想了一下,
是不是因为自己的电脑已经对这个控件在编译的时候,注册过了,而在别人的电脑上,没有注册.
不知道是不是这个原因,还是由什么其它的原因造成的?又该如何解决呢?
贴上测试的网页代码:
<html>
<head>
<title>DialogControl</title>
<SCRIPT LANGUAGE="JavaScript">
function PassParameter()
{
arsplayer_ocx.LoadParameter();
}
</SCRIPT>
</head>
<body>
<center>
<OBJECT ID="arsplayer_ocx" CLASSID="CLSID:3AD1C56A-4F33-4245-ABFC-6190E4528D08"
HEIGHT=550 WIDTH=565
CODEBASE="arsplayer_ocx.ocx">
</OBJECT>
<p></p>
<INPUT TYPE="button" NAME="Submit" VALUE="Submit" />
</center>
</body>
</html>
解决方案1:
Active 控件只有在使用 IE 引擎的浏览器才能显示,如google,firefox 都不支持 ActiveX。一个ActiveX控件如果想在其它人的器上正常加载必需设置数字签名,然后打包成CAB 文件(CAB也需要做数字签名)上传到服务器,这样浏览器才会认为是安全的控件,否则会被拦截掉。做数签名需要签名证书及私钥文件,签名证书需要有根证书及私钥文件。vstudio 2005/2008 带有签名工具,可以自已创建证书。
证书用命令(VS2008):
makecert.exe (创建证书)
cert2spc.exe (转换证书为发行者证书)
SignTool.exe (对 exe,cab,ocx 等文件进行数字签名)
示例:
<object classid="clsid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" id="MyActivex" width="100%" height="100%" codebase="/MyActivex.cab#version=1,0,0,000">
<param name="mode" value="1"/>
...
...
</object>
我之前也遇到过这样的问题,我在自己机器上运行就可以,其他所有机器运行都有问题。我以为是机器的问题,后来有一天我在添加其他东西的时候无意发现我的代码有一行有点小问题,不影响编译。于是我自己机子运行可以,别人就不行。你也可以试试找找自己程序的问题。我当时就是在构造函数初始化的时候写错了一点。你可以找找看看。
解决方案3: regsvr32 xxx.ocx
打包成cab,第一次使用的时候会提示用户安装。 解决方案5:
部分非基于IE的浏览器可能无法正常显示,不要强求。