控件IObjectSafety 的问题

likeyrain 2009-09-22 04:10:57
大家好:
写了个控件,IE会有风险提示,想去掉的话,要做 IObjectSafety和签名,签名已经做了,可控件的 IObjectSafety要怎样实现啊?

看了一些文件

实现IObjectSafety
在IE6以及更高版本的浏览器中我们还必须实现IObjectSafety接口才能保证自己开发的ocx控件不会被IE禁用
怎么实现呢?其实很简单,加上几句话就可以了
①打开ActFrm的头文件,我们最开始的时候已经在这个Form上面加了一个按钮,打开它的头文件后可以看到一个类class TAcFrm 不要管它,跟它没有什么关系,接着往下看,可以看到类似
class ATL_NO_VTABLE TActFrmImpl:
VCLCONTROL_IMPL(TActFrmImpl, ActFrm ..........)之类的代码,我们在括号之后再给他加个接口
加完之后类似这样
class ATL_NO_VTABLE TActFrmImpl:
VCLCONTROL_IMPL(TActFrmImpl, ActFrm ..........),public IObjectSafetyImpl<TActFrmImpl,INTERFACESAFE_FOR_UNTRUSTED_CALLER>
注意不要丢了public前面的逗号,多重继承必须的
②然后再 void InitializeControl(){}函数结束之后加入
BEGIN_CATEGORY_MAP(TActFrmImpl)
IMPLEMENTED_CATEGORY(CATID_SafeForScripting)
IMPLEMENTED_CATEGORY(CATID_SafeForInitializing)
END_CATEGORY_MAP()
③BEGIN_COM_MAP(TActFrmImpl)
VCL_CONTROL_COM_INTERFACE_ENTRIES(IActiveFrmX)
COM_INTERFACE_ENTRY(IObjectSafety)//加入这样一行就ok了
END_COM_MAP()
编译通过,应该没有问题


兄弟,安全控件那还得继承一个,正确的语句应该是:
,public IObjectSafetyImpl<TActiveFormXImpl,INTERFACESAFE_FOR_UNTRUSTED_CALLER|INTERFACESAFE_FOR_UNTRUSTED_DATA>
不然还是弹出对话框


我跟着做了,可这是不成功。请教一下大家,以上的全吗?



...全文
184 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
two_sided 2012-04-13
  • 打赏
  • 举报
回复
我的头文件里面没有ActFrm.h啊,我到一些网站上找了一些实现IObjectSafety接口的方法,但是说的都不是太清楚,哪位高手指点一下?
likeyrain 2009-09-25
  • 打赏
  • 举报
回复
没有其他答案啦吗?那个对我好象不怎么适用
lghndyz 2009-09-25
  • 打赏
  • 举报
回复
帮顶一下!!
likeyrain 2009-09-24
  • 打赏
  • 举报
回复
兄弟,支持不够的,还要帮忙
likeyrain 2009-09-23
  • 打赏
  • 举报
回复
我用的是BCB,跟MFC是一样做的吗?还想请教一下,怎样知道一个控件的安全接口做好了没有?有没有检测工具啊?
蒋晟 2009-09-22
  • 打赏
  • 举报
回复
http://support.microsoft.com/kb/164119

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧