如何实现老的ActiveX控件在IE中调用时增加将其标记为脚本安全和持久性安全?

PagiHi 2001-11-20 06:07:58
...全文
94 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qancy_chen 2001-11-21
  • 打赏
  • 举报
回复
最佩服虫和蛋
PagiHi 2001-11-21
  • 打赏
  • 举报
回复
to:vcmfc(浮躁的菜虫)
实在不好意思,怪我没说清楚,原来的控件是用MFC开发的呀,这怎么办呀?
wyzegg 2001-11-20
  • 打赏
  • 举报
回复
为什么禁止上网,这么惨呀,不过还是比我好,我可从来没有在公司上过网(绝对不准)
vcmfc 2001-11-20
  • 打赏
  • 举报
回复


明天开始禁止上网了,愿好运伴随你!!!!!!!!!!!!!!!!!!!!!
vcmfc 2001-11-20
  • 打赏
  • 举报
回复
Easy,在深入解析ATL里的第26页:

BEGIN_CATEGORY_MAP(XCLASS)

IMPLEMENTED_CATEGORY(CATID_SafeForScripting)
IMPLEMENTED_CATEGORY(CATID_SafeForInitializing)

END_CATEGORY_MAP()

方法二:
#13 如何使我的控件对IE来说是安全的?
要使控件对IE来说是安全的话,则必需实现IObjectSafety接口,ATL提供了IObjectSafetyImpl包装类,以下代码是演示这个功能,加精是新增加的:

class ATL_NO_VTABLE CNoteCtl :
public CComObjectRootEx<CComSingleThreadModel>,
...
// Derive from IObjectSafety
public IObjectSafetyImpl<CNoteCtl,,INTERFACESAFE_FOR_UNTRUSTED_CALLER|INTERFACESAFE_FOR_UNTRUSTED_DATA>
{
...
BEGIN_COM_MAP(CNoteCtl)
COM_INTERFACE_ENTRY(INoteCtl)
COM_INTERFACE_ENTRY(IDispatch)
...
// Add it to our interface map
COM_INTERFACE_ENTRY(IObjectSafety)
END_COM_MAP()
...
// IObjectSafety implementation
STDMETHODIMP GetInterfaceSafetyOptions( REFIID riid, DWORD *pdwSupportedOptions, DWORD *pdwEnabledOptions )

{
ATLTRACE(_T("CNoteCtl::GetInterfaceSafetyOptions()\n"));

*pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER |
INTERFACESAFE_FOR_UNTRUSTED_DATA;
*pdwEnabledOptions = *pdwSupportedOptions;
return S_OK;
}

STDMETHODIMP SetInterfaceSafetyOptions(REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions)
{
ATLTRACE(_T("CNoteCtl::SetInterfaceSafetyOptions\n"));
return S_OK;
}
...
};


3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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