ActiveX控件开发的一些问题一,如何标记控件为安全

      因项目需要,我们采用了ActiveX的方式开发了一个嵌入到页面的小程序,可以实现对多文件的上传。因为还不能支持断点续传所以只支持小文件的传输,但是能一次传输多个小文件对于邮件方面的应用也是很方便的。而且有进度条显示这也给了用户较好的提示。同时我们支持拖入功能,用户可以直接将文件拖入到控件中,即完成对上传文件的选取。

     

      下面对开发中遇到的一些问题进行说明,全文基本为原创,其中参考了很多他人的经验和资料,参考处我会注明原出处。

       

      第一个问题如何标记控件为安全

 

 

    控件发布第一步如何将控件标记为安全的。如果不将控件标记为安全,浏览器将会web页面与控件交互时提示如下信息:

    ActiveX不安全提示

        

    MSDN上对这的解释是:默认,MFC ActiveX控件不被标记为可安全编写脚本和可安全初始化。当IE运行安全级别设置为中等或高时,都回提示控件不安全。

    消除提示有两种办法,The first method uses the Component Categories Manager to create the appropriate entries in the system registry.即修改控件的DllRegisterServer函数来,在注册表中标记控件为安全的。The second method implements an interface named IObjectSafety on your control.第二种方法可以详见

http://dcs.isa.ru/www/vladimirv/inetsdk/inet0002.htm

    这里就第一种方法进行说明,在MSDN上也有第一种方法的详细说明。网址:

    http://support.microsoft.com/kb/161873/zh-cn

    但是该方法有一些不足,这里结合Phinecos(洞庭散人)blog

(http://www.cnblogs.com/phinecos/archive/2008/08/07/1263270.html)进行说明。

   

1.添加辅助函数

    控件的基本结构中含有xxApp,xxCtrl,xxPropPage三个类。找到xxApp的头文件,添加三个辅助函数。

// Helper function to create a component category and associated

// description

HRESULT CreateComponentCategory(CATID catid, WCHAR* catDescription);

// Helper function to register a CLSID as belonging to a component

// category

HRESULT RegisterCLSIDInCategory(REFCLSID clsid, CATID catid);

// Helper function to unregister a CLSID as belonging to a component

// category

HRESULT UnRegisterCLSIDInCategory(REFCLSID clsid, CATID catid);

    找到xxApp的实现文件,添加三个辅助函数的实现。

// Helper function to create a component category and associated

// description

HRESULT CreateComponentCategory(CATID catid, WCHAR* catDescription)

{

    ICatRegister* pcr = NULL ;

    HRESULT hr = S_OK ;

    hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,

                     NULL,

                     CLSCTX_INPROC_SERVER,

                     IID_ICatRegister,

                     (void**)&pcr);

    if (FAILED(hr))</

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值