我用VS2010,在ATL平台下做了一个ActiveX控件,很简单,在HTML页面上,点击一个按钮,ActiveX返回一个数字并显示在屏幕上。
实现了IObjectSafe接口,编译完成后,打包正常,签名正常(购买的签名,有效),ActiveX Test Container运行正常,启动IIS后,本地运行正常,但远程计算机访问会有个小红叉,甚至都不提示下载。HTML代码如下:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<meta http-equiv="content-type" content="text/html" charset="utf8" />
<head>
<title>ActiveX Test</title>
<script type="text/javascript">
function Object(){   
this.value=null;
}
function test(){
alert(tt.Add(2, 3));
}
</script>
</head> <body>
<object id="tt" classid="clsid:F1B91099-4A55-44C4-9FF0-83A54701D80C" codebase="Test.cab#version=1,0,0,1"></object>
<input type="button" value="按钮" onclick="test();"/>
</body>
</html>
不知该如何是好了。
请教各位高手,还请不吝赐教,谢谢!ActiveXWeb ServiceATL

解决方案 »

  1.   

    其他机器上是否ActiveX注册成功,依赖的VC的DLL等是否都带上了
      

  2.   

    操作系统的确不一样,我是用VS2010开发的,在Win7下,使用环境是Server 2008和XP,都不行。
    关键是似乎就没有下载成功,远程计算机里没有包里的文件。。
      

  3.   

    呃。。不能让每一个客户端都跑运行库啊。。我的程序非常简单,没有用到什么特别的库,就是mfc100.dll之类的。
      

  4.   

    先不要通过浏览器,把你运行的东西在客户那边手动安装,注册,看看效果。如果能成功,就是浏览器阻止了ATL控件的下载或者注册等。
    浏览器在下载和注册控件都会进行安全性检测,有可能是你的控件没有通过检查被阻止了,这就要改浏览器设置了。
      

  5.   

    可以用这个命令 dumpbin /dependents 你的dll路径加名称,查看依赖项,vs2010开发的一般有这两个是必须的,atl100.dll, msvcr100.dll。