开发安全标记的mfc activex 控件跟在iis网页中使用跟发布.docVIP

开发安全标记的mfc activex 控件跟在iis网页中使用跟发布.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
开发安全标记的mfc activex 控件跟在iis网页中使用跟发布

开发安全标记的MFC ActiveX 控件及在IIS网页中使用和发布 问题引入: 在VC6.0使用MFC ActiveX ControlWizard开发ActiveX控件时,默认情况下 MFC ActiveX 控件未标记为安全的脚本和初始化的安全。所以导致在控件在IIS中发布时,造成可以加载但是不能正常构造和初始化(即在网页中调用时显示一个红色叉,但其实通过调试发现控件实际是加载了的)。这个问题得解决涉及两方面的问题即1、实现 IObjectSafety 接口的控件使得在 Internet 浏览器的上下文中运行“安全”。2、修改该控件的 DllRegisterServer 函数来标记该控件在注册表中安全。 本文将以一个CCircleCtrl控件实例来说明实现方法,下面分别说明具体实现方法。 生成默认ActiveX控件及控件的调试(老鸟跳过)。 新建工程选择类型选择MFC ActiveX ContronWizard 在Project name中输入”Circle”点击”OK”,其余均按默认完成向导。 将工程编译、连接后,你就已经实现了一个ActiveX控件,并且已经注册到你的计算机。你可以通过在注册表的中找到HKEY_CLASSES_ROOT\CIRCLE.CircleCtrl.1,CLSID中得默认值就是Circle控件的注册号(唯一标志ID),形如04D9986E-E2D7-4827-A8F6-BFE003E64D54但是注意不同计算机生成的这个值是不一样的,下面使用这个值时请将它替换为你的注册号。 调试:ActiveX可以使用ActiveX Control Test Container和浏览器来或其他使用此控件的应用程序来调试。如下图: (1)使用ActiveX Control Test Container调试: F5,在ActiveX Control Test Container启动后,右键选择“插入新控件”,选择我们刚刚生成的控件Circle Control。插入后你将看到一个显示了圆形的控件。控件运行成功。 (2)使用浏览器调试: 新建记事本写入如下代码:(注意clsid用你自己的) head titleActivX Test/title /head body center object classid=clsid:04D9986E-E2D7-4827-A8F6-BFE003E64D54 codebase=circle.ocx#version=1,0,0,0 height=400px width=400px /object /center /body 将文件名改为Circle.html 更改调试方式为Default Web Browser ;F5 (因为已经注册了控件你也可以直接点击这个.html文件查看效果)在地址栏中输入以上html文件的路径,并允许阻止内容。预料中的“圆形”也如期而至。但是把Circle.html拷贝至IIS根目录,在浏览器中输入 HYPERLINK /Circle.html /Circle.html ,按理说我们的计算机已经注册了这个控件,应该显示出“圆形”但是结果却是出现了一个红色的叉。控件在网络发布的时候出现了问题。这就是浏览器阻止了非安全标记的ActiveX控件。要解决这个问题得实现下面的2、3步骤。(解决IIS的安装及配置和使用等网络上资源很多)。 实现 IObjectSafety 接口的控件 在CircleCtl.h加入 #ifdef L_IMPL_OBJECTSAFETY #include objsafe.h #endif// L_IMPL_OBJECTSAFETY 在CCircleCtrl类定义中的DECLARE_MESSAGE_MAP()语句后加入: public: #ifdef L_IMPL_OBJECTSAFETY 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) DECLARE_INTERFACE_MAP(); #endif // L_IMPL_OBJECTSAFETY 在CricleCtl.cpp

文档评论(0)

1honey + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档