• 【VS开发】windows注册ActiveX控件


     ActiveX控件是一个动态链接库,是作为基于COM服务器进行操作的,并且可以嵌入在包容器宿主应用程序中,
    ActiveX控件的前身就是OLE控件。由于ActiveX控件与开发平台无关,因此,在一种编程语言上开发的ActiveX控件可
    以无须作任何修改,即可在另一种编程语言中使用,其效果如同使用Windows通用控件一样。如:在VC++中开
    发的ActiveX控件,不作任何修改即可应用于VB中。由此可见,通过使用ActiveX控件即可实现快速小型的组件重用
    、代码共享,从而提高编程效率。 ----从Internet下载的ActiveX控件,或从其他途径得到的
    ActiveX控件,用户应该怎样做才能正确使用呢?一般来说,一个外来ActiveX控件要在Windows中被正确使用,首先
    必须将控件文件(*.OCX)复制到硬盘中,然后将其在Windows中注册,未在Windows中注册过的ActiveX控件是不能
    使用的。注册ActiveX控件一般来说有三种途径,适用范围不同,各有各的优点,下面分别讨论。
    一、使用Regsvr32.exe程序
    对ActiveX控件进行注册
    ----对于未注册过的ActiveX控件可使用此软件对其进行注册,外来ActiveX控件要应用到自己的程序中也必须进行
    注册。该文件位于Windows目录的system子目录下。使用方法如下:点击“开始”→“运行”;在运行对话框中输入
    以下命令:
    regsvr32<文件名>注册一个ActiveX控件
    regsvr32/u<文件名>解除某ActiveX控件的注册
    ----我们使用一些带ActiveX控件的应用程序时,有时会出
    现不能运行的情况,这有可能是其自带ActiveX控件未注
    册所至,这时不妨使用上述命令一试。另外,VC++使
    用者若对regsvr32.exe的编码感兴趣的话,可在VC++的联
    机帮助中找到其源代码。若使用VC++6.0,则在MSDN光
    盘的sampleVC98MFCcontrols egsvr中。
    二、使用安装程序
    制作软件:InstallShield
    ----使用regsvr32.exe来注册ActiveX控件虽然简单,但需要用
    户手工注册,在不用时还得手工解除注册,因此,这对
    一个应用程序来说并非好的解决方案。大型应用软件
    一般都有一个安装程序,在安装程序中解决ActiveX控件
    注册是较为理想的一种方案。使用InstallShield可以制作
    出专业级的Setup,还可注册其中的ActiveX控件;而且,在
    以后携载软件时,自动注销掉以前注册的ActiveX控件。方
    法如下:
    启动InstallShield,使用ProjectWizard建立一个新的项目;
    新建一个“FileGroup”,将需要注册的ActiveX控件文件放入
    此“FileGroup”中;
    将上述“FileGroup”的“Self-Registered”属性设置成“Yes”。
    ----上述步骤仅为制作Setup中设置自动注册ActiveX控件几
    步,至于使用InstallShield怎样制作一个完整的Setup不在
    本文讨论范围之中,请读者自己参看有关书籍。
    三、在应用程序中加入注册代码
    ----对于小型程序不宜采取第二种方法,较好的方法是
    在程序中嵌入注册代码,实现应用程序自注册。其编程
    方法是:
    使用WindowsAPI函数LoadLibrary载入ActiveX控件;
    使用GetProcAddress函数获取ActiveX控件中注册函数
    DllRegisterServer(注销函数为DllUnregisterServer)指针;
    调用注册函数DllRegisterServer(或注销函数
    DllUnregisterServer)。
    ----下面以VC++6.0编写的RegActivex程序为例,介绍怎样
    在程序中自动注册(注销)ActiveX控件。RegActivex的主体
    框架由VC++6.0的AppWizard自动产生,在其基础上增加两
    个菜单项:“注册ActiveX控件”、“注销ActiveX控件”。当选
    择“注册ActiveX控件”菜单时,将对控件toweratl.ocx(一个
    汉诺游戏)进行注册;当选择“注销ActiveX控件”菜单时
    ,将解除控件toweratl.ocx的注册。
    使用VC++6.0建立一个单文档的应用程序RegActivex,其
    他项目接受默认设置;
    给应用程序增加两个菜单项:“注册ActiveX控件”、“注销
    ActiveX控件”,步骤如下:
    单击VC++6.0左边窗口的“ResoureView”,双击MENU项目下
    的IDR_MAINFRAME以打开菜单编辑器;
    在菜单编辑器中,加入一个主菜单“注册”,在“注册”
    主菜单下加入两个菜单项:“注册ActiveX控件”、“注销
    ActiveX控件”;
    给新建的菜单项“注册ActiveX控件”和“注销ActiveX控件”
    增加响应函数:
    在资源编辑器中,双击MENU中的IDR_MAINFRAME打开菜单编辑
    器,单击“注册ActiveX控件”,按Ctrl+W打开MFCClassWizard;
    双击Messages框中的COMMAND,给“注册ActiveX控件”菜单项增
    加响应函数OnRegisterReg(),单击右边“Edit”按钮,给
    OnRegisterReg()函数增加如下代码:
    voidCMainFrame::OnRegisterReg()
    {
    file://ActiveX控件的路径及文件名
    LPCTSTRpszDllName=“toweratl.ocx";
    //装载ActiveX控件
    HINSTANCEhLib=LoadLibrary(pszDllName);
    if(hLib<(hinstance)hinstance_error)
    {
    MessageBox(“不能载入Dll文件!",
    “结果",MB_OK);
    return;
    }
    //获取注册函数DllRegisterServer地址
    FARPROClpDllEntryPoint;
    lpDllEntryPoint=GetProcAddress
    (hLib,_T(“DllRegisterServer"));
    //调用注册函数DllRegisterServer
    if(lpDllEntryPoint!=NULL)
    {
    if(FAILED((*lpDllEntryPoint)()))
    {
    MessageBox(“调用DllRegisterServer失败!",
    “结果",MB_OK);
    FreeLibrary(hLib);
    return;
    };
    MessageBox(“注册成功",“结果",MB_OK);
    }
    else
    MessageBox(“调用DllRegisterServer失败!",
    “结果",MB_OK);
    }
    “注销ActiveX控件”菜单项响应函数的编写方法同上,代
    码也相似,只是将“lpDllEntryPoint=GetProcAddress(hLib,_T(“
    DllRegisterServer"));”改成:
    lpDllEntryPoint=GetProcAddress(hLib,_T
    (“DllUnregisterServer"))。
    编译联接上述程序,即可得一个可执行文件。另需注意
    的是:应将ActiveX控件文件toweratl.ocx复制到Windows的system
    目录下。控件文件toweratl.ocx在微软出版的《VisualC++
    6.0程序员指南》所附光盘中可以找到。
    测试上述程序:运行《VisualC++6.0程序员指南》所附
    光盘中的game2程序,若使用RegActivex注册了toweratl.ocx控件
    ,则该程序可以正常运行;若使用RegActivex注销了
    toweratl.ocx控件则game2不能运行。
  • 相关阅读:
    js点击按钮为元素随机字体颜色和背景色
    js随即数字random实现div点击更换背景色
    while循环计算1-100和,1-100内偶数/奇数/被整除的数的和
    慕课手机展示页案例
    第3题:求子数组的最大和
    第4题:在二叉树中找出和为某一值的所有路径
    第5题:查找最小的K个元素
    Linux系统开启IPv6任播(anycast)地址
    第7题:判断两个链表是否相交
    第8题上:思维题
  • 原文地址:https://www.cnblogs.com/huty/p/8518424.html
Copyright © 2020-2023  润新知