`
strong_fee
  • 浏览: 178726 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

基于.Net的ActiveX插件开发

    博客分类:
  • .Net
阅读更多

一、编写控件类

一般而言,一个控件只提供一个暴露给COM的类。一般形式如下:
[Guid("04D4D38F-9A36-47C6-A657-1B2313B21DF2")]
[ProgId("Product.ActiveX.ProductActiveX")]
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
public class ProjectActiveX : IObjectSafety, ICommand{

}
 
其中:
ProgId is the unique name of the class that will be exposed as COM object.
ClassInterface is the type of the COM interface that will wrap our .NET class
Guid is the unique GUID that will expose our class to be used as COM object. To create a new GUID, you can use the tool in Visual Studio Tools -> Create GUID
ComVisible tells that our class can be used as COM object
 ClassInterface分为None、AutoDispatch、AutoDual,None和AutoDispatch较为常用。当COM类为单独类时使用AutoDual,当COM类实现某接口时,使用None。具体区别请参考Introducing the Class InterfaceClassInterface
暴露给COM的类通常需要强命名,命名工具为Sn.exe

二、安全性问题

在使用控件的时候,对于IE弹出的一下提示。可以通过让ProjectActiveX实现接口IObjectSafety。可以参考这篇文章

我已经验证通过这种方法可以解决这个问题。但是网上有的人说,这篇文章中描述的方法行不通,参考这里。两篇文章的接口是一样的,只是实现不一样。这篇文章中的方法我暂时没有去测试,有兴趣的读者可以参考一下。

三、控件的注册

控件可以通过命令注册,也可以通过安装工程来注册。这两种方式我都有做法,但是非常推荐使用安装工程。
以下是通过命令来注册的例子:
RegLib.bat: 注册命令
regasm /codebase ../lib/Product.dll
pause
 UnRegLib.bat
regasm /u ../lib/Product.dll
pause
 注意dll所处的路径,其中需要用到RegAsm.exe

接下来主要讲使用Setup工程注册。
  1. File-->New Project-->Other Project Types-->Setup and Depolyment-->Visual Studio Installer-->Setup Project
  2. 右击Setup工程-->Add-->Project Output-->选择工程名,选中"Primary output"
  3. 右击刚才新建的主工程-->Property-->修改Register属性为vsdrpCOM
  4. 创建快捷方式:右击Setup工程-->View-->File System-->
    Application Folder-->添加安装包的图标 
    右键主工程-->Create Shortcut to User's  Desktop-->修改快捷方式图标和名称。
  5. 创建卸载快捷方式:右键Application Folder-->Add-->File,选择“c:\windows\system32\msiexec.exe”-->
  6. 配置是否自带.Net Framework: 右击Setup工程-->Property-->选择Prerequisties-->右击该文件-->Creat Shortcut to Desktop-->修改快捷方式的名称和图标-->修改Augument属性为”/x {ProductCode}“,其中弄个ProductCode可以在安装工程的属性中找到。将改快捷方恨
    如果需要自带.Net Framework,则勾选"Microsoft .Net Framework 4(x86 and x64)",并选择install location第二项。
    如果需要在线安装.Net Framework,则不需要 "Microsoft .Net Framework 4(x86 and x64)",并选择install location的第一项,指示从微软网站下载。
  7. 当然还有cab的制作,这个俺还没有做过,可以参考文章WEB下的客户端控件(OCX)的开发应用第3部分。
四、控件的升级
  1. 控件本身的GUID的修改。[重新生成一个GUID]
  2. 修改setup工程的版本号。
  3. 修改发布页页的ClassID。
     详细步骤课参考这篇文章的后半部分。
五、许可证
可参考第八部分的第四篇文章,可参考获取Assembly的Public Key Token
六、控件的log
直接使用app.config来配置EL,包括logging,拦截等等的配置都起不了作用(至今没搞懂为啥,希望大牛赐教)。所以,我们可以直接写代码不通过配置文件来配置插件的log。可以参考这篇文章
七、控件的使用
在html中加入:
<OBJECT id="ProjectActiveX" classid="clsid:04D4D38F-9A36-47C6-A657-1B2313B21DF2" codebase="setup/Product控件.exe"></OBJECT>
  其中clsid为COM类的值,codebase为下载控件的地址,id用于在html中控件的类对象。Star56ActiveX相当于控件的类对象,调用属性和方法的放回跟实际的类对象一致。

还有一点值得说明,判定控件是否加载成功的js代码为:
ProjectActiveX.object == null

ProjectActiveX.object为空则说明加载失败,否则加载成功。

八、扩展阅读



  • 大小: 10.5 KB
  • 大小: 40.1 KB
分享到:
评论

相关推荐

    ActiveX Control Test Container.(ActiveX插件测试容器2010))

    ActiveX控件测试容器是开发和测试ActiveX控件的重要工具,主要针对2010年版本进行设计。ActiveX技术是由微软公司在1996年推出的一种组件对象模型(Component Object Model,简称COM),它允许软件开发者创建可重用的...

    基于.Net技术创建IE面板插件

    通过以上步骤,你就能成功地创建一个基于.Net技术的IE面板插件。然而,需要注意的是,由于安全性和兼容性问题,现代浏览器如Chrome和Firefox已经不再支持ActiveX技术。因此,如果你的目标用户群主要是使用现代浏览器...

    asp.net 锁屏ActiveX

    ASP.NET是一种基于.NET Framework的服务器端编程模型,用于构建动态Web应用程序。在标题"asp.net 锁屏ActiveX"中,锁屏ActiveX是指利用ActiveX控件在ASP.NET环境中实现对用户计算机屏幕的锁定功能,防止键盘输入和...

    [原创]实现用VB.Net(C#)开发K3 BOS 插件的真正可行方法

    在金蝶K3 BOS系统中,官方提供的插件开发方式主要是基于VB6,然而随着.NET技术的发展,越来越多的开发者希望能够利用.NET框架下的语言如VB.NET或C#来开发K3 BOS插件。这种方法不仅可以提高开发效率,还能更好地利用...

    C#开发IE插件(ActiveX)

    总的来说,使用C#开发IE插件,尤其是ActiveX控件,需要深入理解COM、.NET Framework和Web交互原理。虽然现代浏览器趋势逐渐远离ActiveX,但在某些特定场景,如企业内部系统,ActiveX仍具有一定的应用价值。开发这样...

    基于.NET编程增强Excel与CAD的数据交流功能——以水利工程设计应用为例.pdf

    在Excel的二次开发上,文章提到了三种方式:VBA的内部开发、COM插件开发以及自动化服务开发。而CAD提供了五种主要的开发工具:Object-ARX、ActiveX开发、ADS、Auto LISP/VisualLisp以及.NET开发。在这些选项中,选择...

    功能强大的 .Net weboffice 插件

    .Net WebOffice 是一种基于.NET Framework开发的功能强大的Web应用程序插件,专门设计用于在Web环境中实现Office文档的在线加载、查看、编辑和打印等功能。这种技术允许用户无需在本地计算机上安装Office软件,即可...

    Word2010插件的开发与实现

    Word2010插件开发是一项技术性强、实用价值高的工作,主要目的是通过扩展Word的功能,以满足用户在文档处理中的特殊需求。VB6.0作为经典的编程环境,被广泛用于开发这种插件,因为它提供了丰富的接口和组件,使得...

    ActiveX开发人员指南

    9. **替代技术和迁移路径**:考虑到ActiveX的安全性和兼容性问题,书中可能会讨论一些替代技术,如.NET Framework、Web Components或WebAssembly,并提供从ActiveX迁移到这些新技术的建议。 通过阅读《ActiveX开发...

    基于C#编写的操作摄像头的Activex控件

    标题中的“基于C#编写的操作摄像头的Activex控件”指的是使用C#编程语言创建的一个ActiveX控件,该控件专用于控制和操作计算机系统中的摄像头设备。ActiveX是一种由微软开发的技术,允许在不同应用程序之间共享和...

    C#开发ActiveX控件

    总的来说,虽然C#开发ActiveX控件在当今的Web开发环境中可能并不常见,但这项技术对于理解COM组件和浏览器插件的历史以及.NET与COM的交互具有一定的学习价值。对于需要在特定环境下使用ActiveX的项目,掌握这种开发...

    使用C#开发ActiveX控件全攻略

    ActiveX插件,旧称为OLE控件或OCX控件,是一种软件组件,能够嵌入到网页或其他应用程序中。目前,主要由Internet Explorer浏览器支持ActiveX技术。由于安全性和兼容性问题,现代Web开发中ActiveX的使用已逐渐减少,...

    ASP.NET实例开发源码——网页打印控件Lodop4.0专业精致.zip

    ASP.NET是一种基于.NET Framework的服务器端编程模型,用于构建功能丰富的、高性能的Web应用程序。在这个实例开发源码中,我们关注的是"网页打印控件Lodop4.0专业精致",这是一款专为网页打印设计的高效工具,旨在...

    FastReport.Net.rar

    ActiveX控件是一种基于组件的对象,由Microsoft开发,可以在多种应用程序之间共享代码,尤其适用于Web应用程序。ActiveX控件可以通过浏览器插件的方式被网页调用,提供额外的功能和服务。在本例中,FastReport.Net被...

    Flash .net程序集

    Flash .NET程序集是开发基于.NET Framework的Flash播放器应用时不可或缺的一部分。这些程序集主要包含与Adobe Flash Player交互所需的类库,使得开发者能够在.NET环境中创建、控制和嵌入Flash内容。以下是关于这个...

    AUTOCAD C#二次开发

    - **运行环境**: 基于.NET Framework,可获得更好的性能和支持。 #### 四、基于C#的AUTOCAD二次开发实例 ##### 1. 基础篇实例概览 - **实例1: 基本例子** - 新建项目 - 添加引用 - 全局变量定义 - 打开CAD文件...

    中控指纹识别 B/S WEB .NET 源码demo(针对Chrome)

    【中控指纹识别 B/S WEB .NET 源码demo】是一种基于.NET技术构建的Web应用程序,用于实现生物特征识别中的指纹识别功能。这个源码示例特别之处在于它不仅适用于传统的B/S(Browser/Server,浏览器/服务器)架构,...

    代替OCX Activex 等IE插件的方式

    通过上述步骤,我们可以实现一个基于HTTPS的本地服务器解决方案来替代传统OCX ActiveX插件,该方案不仅支持最新的浏览器,而且具备更高的安全性与兼容性。此外,我们还介绍了如何使用各种工具和技术来完成这一过程,...

    《AutoCAD .NET开发指南-2012版》

    总之,本书是一本内容全面且实用的***开发教程,适用于有一定AutoCAD使用经验并且希望学习如何通过.NET技术开发AutoCAD插件的开发者。通过阅读和实践本书中的知识,开发者可以提升对AutoCAD进行自动化编程的能力,...

Global site tag (gtag.js) - Google Analytics