• 浏览器插件之ActiveX开发(二)


     按照上文《浏览器插件之ActiveX开发(一)》的步骤,能开发一个基于MFC的简单的ActiveX控件。不过在实际操作中还是会遇到一些问题。由于对COM编程了解得很少很少,有些问题我也没有找到很好的解决方法。

         一、ActiveX需要引用其他dll的问题

          我们的ActiveX需要对IC卡设备进行读写,所以需要调用设备自带的接口。设备厂商提供了“mwhrf_bj.lib”、“mwhrf_bj.dll”和“mwrf32.h”等接口文件。将“mwhrf_bj.lib”和“mwrf32.h”添加到项目中,ActiveX的接口方法中就可以调用接口文件中的方法了。但是在编译时会出现“Project:error PRJ0050:未能注册输出。请尝试启用“每个用户的重定向”,或用提升权限从命令提示窗口中注册该组件”或“Project : error PRJ0050: Failed to register output. Please ensure you have the appropriate permissions to modify the registry”的错误。

         实际上该错误不是出现在编辑阶段,而是出现在注册编译后的ocx文件时。Vs.net 2008默认在编译成功后会自动注册编译后的ocx文件。右击项目名称,选择“Properties”,在弹出对话框的“Configurations Properties->Linker->General”中的Register Output就可以配置编译后是否自动注册ocx,如下图所示:

           image

          之所以注册ocx时出错,是因为注册时找不到被调用的“mwhrf_bj.dll”文件。将被调用的“mwhrf_bj.dll”文件放在ocx文件相同目录下或者其他%PATH%路径下(如Windows文件夹或System32文件夹等),则注册ocx时不会报错。在vs.net开发环境中可以直接将要被调用的外部dll文件copy到Debug或Release目录下即可,也可以在PreBuild脚本里将外部dll文件COPY到编译目标文件夹,如:

           image

           注:可参考“http://www.cnblogs.com/lidabo/archive/2012/07/16/2593604.html”文章。

         二、ActiveX的调试方法

            在Vs.net 2008下可以对ActiveX按如下方式进行调试:

            1、准备好Demo.html文件并写好测试程序,该页面中需通过<object />来引用需测试的ocx控件(关于如何在html页面中调用控件在后续文章将专门提及)。

            2、在vs.net 2008中右击项目名称,选择“Properties”,在弹出框中的Debugging配置页里配置好CommandCommandArgs参数:

                Command:        本地IE浏览器的路径,如“C:\Program Files\Internet Explorer\IEXPLORE.EXE

                Command Args: 已经创建好的用于测试ocx的html文件路径(如上面提及的Demo.html文件路径)

                image

            3、在程序中需调试的地方设置断点。按F5运行后vs.net将自动启动IE并打开对应的html测试文件,在断点处会中断运行进入调试状态。


    =======================================================================
    野文(Jasson Qian)
    ------------------------------------------------------
    博客园:http://qguohog.cnblogs.com
    CSDN:http://blog.csdn.net/sallay
     
    分类: Web开发C&C++
    标签: ActiveXCOM插件
  • 相关阅读:
    Kubernetes——安装GlusterFS分布式文件系统
    Jenkins从入门到精通——SonarQube:持续代码质量检查
    Jenkins从入门到精通——代码质量
    Redis从入门到精通——Redis数据类型——1、字符串(String)命令
    Redis从入门到精通——Redis客户端
    并发查询ElasticSearch, 根据分片来实现
    Golang开源定时任务调度框架robfig/cron优化
    解决Ubuntu17.04以上系统,yarn init报错
    Angularjs中的$q详解
    总结那些有默认margin,padding值的html标签
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2874418.html
Copyright © 2020-2023  润新知