文档详情

activex控件在IE中弹出安全警告的解决办法(国外英文资料).doc

发布:2017-06-06约1.33万字共24页下载文档
文本预览下载声明
activex控件在IE中弹出安全警告的解决办法(国外英文资料) 写的activex控件在IE中弹出安全警告的解决办法 # include objsafe.h / /在控件头文件中加入: DECLARE_INTERFACE_MAP() BEGIN_INTERFACE_PART(ObjectSafety IObjectSafety) STDMETHOD(GetInterfaceSafetyOptions)(REFIID riid,DWORD __RPC_FAR * pdwSupportedOptions,DWORD __RPC_FAR * pdwEnabledOptions); STDMETHOD(SetInterfaceSafetyOptions)(REFIID riid、DWORD dwOptionSetMask、DWORD dwEnabledOptions); END_INTERFACE_PART(ObjectSafety) / /在控件的CPP文件中加入: BEGIN_INTERFACE_MAP(CVP2PCtrl COleControl) INTERFACE_PART(CVP2PCtrl IID_IObjectSafety ObjectSafety) END_INTERFACE_MAP() / / IObjectSafety的实现 STDMETHODIMP CVP2PCtrl:XObjectSafety::GetInterfaceSafetyOptions( REFIID riid, DWORD __RPC_FAR * pdwSupportedOptions, DWORD __RPC_FAR * pdwEnabledOptions) { METHOD_PROLOGUE_EX(CVP2PCtrl ObjectSafety) 如果(!pdwSupportedOptions | | ! pdwEnabledOptions) { 返回E_POINTER; } * pdwSupportedOptions = interfacesafe_for_untrusted_@| INTERFACESAFE_FOR_UNTRUSTED_DATA; * pdwEnabledOptions = 0; 如果(NULL = = pThis - GetInterface(riid)) { 跟踪(“请求的接口不受支持。\ n”); 返回E_NOINTERFACE; } / /什么接口正在被检查? OLECHAR szGUID[39]; 我= StringFromGUID2(riid,szGUID,39); 如果(riid = = IID_IDispatch) { / /客户端想知道对象是否对脚本安全 * pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER; 返回S_OK; } else if(riid = = IID_IPersistPropertyBag) | | riid = = IID_IPersistStreamInit | | riid = = IID_IPersistStorage | | riid = = IID_IPersistMemory) { / /这些是COleControl派生控制支持的持久性接口 / /如在afxctl . h中所示 / /客户端想知道对象是否安全地从持久数据初始化 * pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA; 返回S_OK; } 其他的 { / /找出这是什么接口,并决定启用哪些选项 TRACE(“我们没有考虑到这个接口的安全性,它是我们支持的……”); 返回E_NOINTERFACE; } } STDMETHODIMP CVP2PCtrl:XObjectSafety::SetInterfaceSafetyOptions( REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions) { METHOD_PROLOGUE_EX(CVP2PCtrl ObjectSafety) OLECHAR szGUID[39]; / /这个接口到底是什么? / /我们可以在HKEY_CLASSES_ROOT \ Interface下面的注册表中进行快速查找 我= StringFromGUID2(riid,szGUID,39); 如果(0 = dwOptionSetMask 0 = dwEnabledOptions) { / /控件当然不会通过指定的接口来支持请求 / /因此,即使不支持该接口,也可以安全地返回S_OK。 返回S_OK; }
显示全部
相似文档