描述:
使用ATL开发一个ActiveX控件的问题
不将服务器站点放入可信站点,activex能提示下载,但不能运行,ie状态栏的左边双击弹出的错误提示为:对象不支持此属性或方法
而放入可信站点后,才能正常运行,但是这时候又会对话框提示:在此页上的Activex控件和本页上的其他部分的交互可能不安全,你想允许这种交互吗?
是否使用证书(makecert生成的测试证书)的时候都是这样;
使用Iexpress打包成CAB的
本地测试一切正常
ATL实现了IObjectSafety接口(
public IObjectSafetyImpl<Cfoo, INTERFACESAFE_FOR_UNTRUSTED_CALLER>
COM_INTERFACE_ENTRY(IObjectSafety)
)
通过添加以上两行
怎么样才能不把服务器加入可信站点,使用签名就可以直接运行呢?
----------------------------HTML---------------------------------
<HTML>
<HEAD>
<TITLE>ATL</TITLE>
<OBJECT id=ActiveXCtrl align="CENTER" WIDTH=0 HEIGHT=0 classid="CLSID:622FFF89-100D-4829-8387-FD19373FC4B6" codebase="atl01.CAB#version=1.0.0.1"></OBJECT>
<script language="javascript">
function send_sign()
{
var ret = ActiveXCtrl.send_sign(rfid.value,data.value)
alert(ret)
}
function get_pass()
{
var ret = ActiveXCtrl.get_pass(rfid.value)
alert(ret)
}
function write1()
{
var cmd = data.value
var ret = ActiveXCtrl.write(cmd)
}
function add()
{
var ret = ActiveXCtrl.add(3,3);
alert(ret);
}
</script>
</HEAD>
<BODY>
<input name=rfid value='2222222222222222' maxlength=255 size=25 >
<input name=data value='2222222222222222' maxlength=255 size=255 >
<input type="button" value="SEND" id="btnOK" /input>
<input type="button" value="GET" id="btnAdd" /input>
<input type="button" value="WRITE" id="btnWrite" /input>
</BODY>
</HTML>
--------------------INF文件-------------------------------
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
ATL01.dll=ATL01.dll
ATL01.inf=ATL01.inf
[ATL01.inf]
file-win32-x86=thiscab
DestDir=11
FileVersion=1,0,0,1
RegisterServer=yes
[ATL01.dll]
file-win32-x86=thiscab
clsid={622FFF89-100D-4829-8387-FD19373FC4B6}
DestDir=11
FileVersion=1,0,0,1
RegisterServer=yes
[RegisterFiles]
%11%\ATL01.dll
-----------------------------------------------------
解决方案1:
要买证书
解决方案2:有证书就行了啊