有{間}客栈

Thought is a seed, and action is the tree.
    <<  全职杀手:用VSTS2010进行软件生命周期管理 | 首页 | 详解VSTS与OFFICE的协同开发:Word篇  >>
  • 2009-05-15

    步步学ACTIVEX网页控件开发:创建安全的ActiveX控件 - [软件开发]

    创建安全的ActiveX控件

      要想创建一个能够在IE中成功加载而没有“不安全”的警告或者错误提示信息的ActiveX控件,我们必须实现安全的初始化和脚本。关于安全初始化的更加 详细的信息,请参考本文结尾的参考资料“Safe Initialization and Scripting for ActiveX Controls”。基本上,所有要做的工作都是在DllRegisterServer 和DllUnregisterServer这两个函数中完成的。下面,我们就来一步步地将我们的ActiveX控件变成一个“安全的”控件。

      第一篇:步步学ACTIVEX网页控件开发:创建控件

      第二篇:步步学ACTIVEX网页控件开发:添加对GIF的支持

      第三篇:步步学ACTIVEX网页控件开发:为控件创建网页

      1.编辑MyActiveX.cpp并添加如下的代码。其中,CLSID_SafeItem的值应该跟MyActiveXCtrl.cpp中的 IMPLEMENT_OLECREATE_EX一致,这就等同于你的ActiveX控件。同样,它也应该跟你的HTML页面中的OBJECT ID标签中的CLSID一致。

    #include "comcat.h"
    #include
    "strsafe.h"
    #include
    "objsafe.h"

    // CLSID_SafeItem – 安全的ActiveX控件所必须的内容
    // ID的值跟xxxCtrl.cpp文件中的IMPLEMENT_OLECREATE_EX一致

    const CATID CLSID_SafeItem =
    {
    0x36299202, 0x9ef, 0x4abf,{ 0xad, 0xb9, 0x47, 0xc5, 0x99, 0xdb, 0xe7, 0x78}};

    // HRESULT CreateComponentCategory – 用于注册安全的ActiveX控件

    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))
            
    return hr;

        
    // 确认HKCR\Component Categories\{..catid...}键值被注册

        CATEGORYINFO catinfo;
        catinfo.catid
    = catid;
        catinfo.lcid
    = 0x0409 ; // english

        size_t len;
        
    // 确认描述不是太长。
    // 只复制开始的127个字符。
    // StringCchLength的第二个参数表示被读入catDescription的最大字符数。
        
    // 第三个参数表示字符串的长度

        hr
    = StringCchLength(catDescription, STRSAFE_MAX_CCH, &len);
        
    if (SUCCEEDED(hr))
            {
            
    if (len>127)
              {
                len
    = 127;
              }
            }  
        
    else
            {
              
    // TODO: Write an error handler;

            }

        hr
    = StringCchCopy(catinfo.szDescription, len + 1, catDescription);
        
    // 添加字符串结束符.
        catinfo.szDescription[len + 1] = '\0';

        hr
    = pcr->RegisterCategories(1, &catinfo);
        pcr
    ->Release();

        
    return hr;
    }

    // HRESULT RegisterCLSIDInCategory -

     【内容导航】

    • 第1页:创建安全的ActiveX控件
    • 第2页:注册组件分类信息
    • 第3页:修改DllRegisterServer函数

    历史上的今天:

    详解VSTS与OFFICE的协同开发:Outlook篇 2009-05-15
    详解VSTS与OFFICE的协同开发:Word篇 2009-05-15
    应用程序中的Command Links设计 2007-05-15
    Windows下如何输入德文? 2007-05-15

    随机文章:

    详解VSTS与OFFICE的协同开发:Outlook篇 2009-05-15
    详解VSTS与OFFICE的协同开发:Word篇 2009-05-15
    步步学ACTIVEX网页控件开发:为控件创建网页 2009-05-05
    步步学ACTIVEX网页控件开发:添加对GIF的支持 2009-04-27
    步步学ACTIVEX网页控件开发 2009-04-12

    收藏到:Del.icio.us




    Tag:VisualStudio VisualC++
    引用地址:
    imcc 发表于09:35:17 | 编辑 | 继续话题 | 转发 | 分享 0

搜索

最新日志

  • Visual Studio 2010对并行计算的支持
  • Windows 7 Party
  • Wow~Windows 7 Party宣传片
  • 如何为Windows 7开发应用程序?
  • 周末,吃喝玩乐
  • 帅!太帅了!Windows 7的Bing桌面主题
  • Windows 7 Party! Join us~
  • Visual Studio 2010 Beta 2 Training Kit发布
  • Visual Studio 2010 beta2发布,MSDN旧貌换新颜
  • 微软发布Visual Studio 2010 beta2
全部日志>>
  • RSS 什么是RSS?
    用IM提醒我内容更新
    订阅到QQ邮箱
    订阅到鲜果阅读器
    订阅到Google阅读器
    订阅到抓虾阅读器
  • 《城客》第四期:创意之城
    博客大巴
    博客大巴使用指南
    博客大巴模板中心
    免费注册博客大巴
    一键博客搬家工具
    中文互动杂志城客
Copyright © 2002-2009 BlogBus.com, All Rights Reserved. 博客大巴 版权所有