社区
网络通信/分布式开发
帖子详情
急救!!!DELPHI 怎么实现 IObjectSafety ???
kk19840210
2008-03-14 05:25:28
DELPHI 怎么实现 IObjectSafety
我做了一个OCX 控件但是在网页里加载是 提示是否运行该控件
除了降低IE 安全级别取消该提示外还有什么方法解决吗??
网上有人说用 IObjectSafety 但是具体怎么实现请各位大侠帮忙
...全文
69
3
打赏
收藏
急救!!!DELPHI 怎么实现 IObjectSafety ???
DELPHI 怎么实现 IObjectSafety 我做了一个OCX 控件但是在网页里加载是 提示是否运行该控件 除了降低IE 安全级别取消该提示外还有什么方法解决吗?? 网上有人说用 IObjectSafety 但是具体怎么实现请各位大侠帮忙
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kk19840210
2008-03-17
打赏
举报
回复
...
kk19840210
2008-03-17
打赏
举报
回复
顶起来
望各位多帮帮忙
珍惜生命远离CPP
2008-03-14
打赏
举报
回复
http://www.moon-soft.com/doc/15735.htm
如何 I
Object
Safety
标记 ATL 控件安全初始化
需要用来获得所需的功能在步骤涉及到 I
Object
Safety
Impl 用作您的控件派生的类之一,和重写 GetInterface
Safety
Options 和 SetInterface
Safety
Options。 这使您
实现
所需的功能在这种情况下意味着将标记为可安全编写脚本和初始化该控件。 若要将 I
Object
Safety
Impl 需要将其添加到您的控件派生的类的列表。 是例如多边形教程中您看到以下: class ATL_NO_VTABLE CPolyCtl : ... public I
Object
Safety
Impl // ATL's version of // I
Object
Safety
{ public: BEGIN_COM_MAP(CPolyCtl) ... COM_INTERFACE_ENTRY_IMPL(I
Object
Safety
) // Tie I
Object
Safety
// to this COM map END_COM_MAP() STDMETHOD(GetInterface
Safety
Options)(REFIID riid, DWORD *pdwSupportedOptions, DWORD *pdwEnabledOptions) { ATLTRACE(_T("C
Object
Safety
Impl::GetInterface
Safety
Options\n")); if (!pdwSupportedOptions || !pdwEnabledOptions) return E_FAIL; LPUNKNOWN pUnk; if (_InternalQueryInterface (riid, (void**)&pUnk) == E_NOINTERFACE) { // Our
object
doesn't even support this interface. return E_NOINTERFACE; }else{ // Cleanup after ourselves. pUnk->Release(); pUnk = NULL; } if (riid == IID_IDispatch) { // IDispatch is an interface used for scripting. If your // control supports other IDispatch or Dual interfaces, you // may decide to add them here as well. Client wants to know // if
object
is safe for scripting. Only indicate safe for // scripting when the interface is safe. *pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER; *pdwEnabledOptions = m_dw
Safety
& INTERFACESAFE_FOR_UNTRUSTED_CALLER; return S_OK; }else if ((riid == IID_IPersistStreamInit) || (riid == IID_IPersistStorage)) { // IID_IPersistStreamInit and IID_IPersistStorage are // interfaces used for Initialization. If your control // supports other Persistence interfaces, you may decide to // add them here as well. Client wants to know if
object
is // safe for initializing. Only indicate safe for initializing // when the interface is safe. *pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA; *pdwEnabledOptions = m_dw
Safety
& INTERFACESAFE_FOR_UNTRUSTED_DATA; return S_OK; }else{ // We are saying that no other interfaces in this control are // safe for initializing or scripting. *pdwSupportedOptions = 0; *pdwEnabledOptions = 0; return E_FAIL; } } STDMETHOD(SetInterface
Safety
Options)(REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions) { ATLTRACE(_T("C
Object
Safety
Impl::SetInterface
Safety
Options\n")); if (!dwOptionSetMask && !dwEnabledOptions) return E_FAIL; LPUNKNOWN pUnk; if (_InternalQueryInterface (riid, (void**)&pUnk) == E_NOINTERFACE) { // Our
object
doesn't even support this interface. return E_NOINTERFACE; }else{ // Cleanup after ourselves. pUnk->Release(); pUnk = NULL; } // Store our current
safety
level to return in // GetInterface
Safety
Options m_dw
Safety
|= dwEnabledOptions & dwOptionSetMask; if ((riid == IID_IDispatch) && (m_dw
Safety
& INTERFACESAFE_FOR_UNTRUSTED_CALLER)) { // Client wants us to disable any functionality that would // make the control unsafe for scripting. The same applies to // any other IDispatch or Dual interfaces your control may // support. Because our control is safe for scripting by // default we just return S_OK. return S_OK; }else if (((riid == IID_IPersistStreamInit) || (riid == IID_IPersistStorage)) && (m_dw
Safety
& INTERFACESAFE_FOR_UNTRUSTED_DATA)) { // Client wants us to make the control safe for initializing // from persistent data. For these interfaces, this control // is safe so we return S_OK. For Any interfaces that are not // safe, we would return E_FAIL. return S_OK; }else{ // This control doesn't allow Initialization or Scripting // from any other interfaces so return E_FAIL. return E_FAIL; } } ... } ATL 3.0 中, I
Object
Safety
Impl 的
实现
已更改,使您现在可以作为模板参数提供安全选项。 例如,上述类的声明将显示为 class ATL_NO_VTABLE CPolyCtl : ... public I
Object
Safety
Impl { public: BEGIN_COM_MAP(CPolyCtl) ... ,您将不必重写两个方法。 有关其他信息,单击下面,文章编号,以查看 Microsoft 知识库中相应: 192093 PRB: 编译器错误时移植到 ATL 3.0 I
Object
Safety
Impl
cab包自动加载更新
1.
实现
了ocx对外接口 2.可隐藏主界面 3.
实现
安全接口I
Object
Safety
4.
实现
cab包的自动加载 5.
实现
cab版本自动更新
ActiveX 控件安全性demo.zip
MFC ActiveX控件未标记为“安全脚本”和“安全初始化”。当控件在Internet Explorer中运行且安全级别设置为中或高时,这一点就变得很明显。在这些模式中的任何一种模式下,都可能会显示警告,表明控件的数据不安全,或者控件可能不安全,无法使用脚本。 控件可以使用两种方法来消除这些错误。第一个涉及
实现
I
Object
Safety
接口的控件,对于想要改变其行为并在Internet浏览器的上下文中运行时变得“安全”的控件非常有用。第二个涉及修改控件的DllRegisterServer函数以在注册表中标记控件“safe”。 本测试测序
实现
I
Object
Safety
接口,包括测试网页
c# 制作active控件说明
由于本人在制作的时候遇到比较多的麻烦,现在我已经完成了OCX的制作,所以整理了一个文档以供刚开始学习的人参考。文档详细描述了OCX控件的制作步骤。
activex控件在IE中弹出安全警告的解决办法.txt
activex控件在IE中弹出安全警告的解决办法.txt activex控件在IE中弹出安全警告的解决办法.txt
网络通信/分布式开发
1,594
社区成员
32,947
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章