`
strong_fee
  • 浏览: 175840 次
  • 性别: 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
分享到:
评论

相关推荐

    asp.net知识库

    技术基础 New Folder 多样式星期名字转换 [Design, C#] .NET关于string转换的一个...C#+ASP.NET开发基于Web的RSS阅读器 ASP.NET RSS Toolkit(RSS工具) Serialize Your Deck with Positron [XML Serialization, XSD, C#]...

    donet activex控件

    基于.net的activex控件的开发,打包以及发布.该资源包含三个项目.在使用该插件时,必须将测试地址设置为可信任地址,同时需要设置ie的acitvex选项.

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

    C#编写的Active X空间, 操作摄像头. (源代码)

    Stimulsoft Reports.Net中文介绍

    在您的客户端的机器里不需要安装.Net框架、ActiveX控件或其他特殊 插件。所有你需要的只是一个带有Flash Player 9的Web浏览器。 这是首次一个报表生成器能让您在web浏览器的窗口中编辑您的报表。唯一的需求是一个web...

    web截图activex控件

    同时新颖网络提供了ASP.NET(C#)和PHP的开发文档,和完善的ActiveX接口,您可以非常容易的使用和进行二次开发。最新版本的截屏控件极大的优化了图片数据传输的效率,可以帮助用户节省约40%的上传时间。 相信新颖网络...

    用友华表CELL插件Demo

    用友华表的CELL插件是一款基于ActiveX技术的解决中国式报表显示和打印的第三方控件, 和其它第三方ActiveX控件一样,用友华表CELL插件只能运行在客户端,只能使用JAVASCRIPT、VBSCRIPT客户端语言操纵控件,进行直接...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf 第I部分 语言结构和环境 第1章 visual studio 2010 3 1.1 visual studio 2010:从express到ultimate的各种版本 4 1.2 visual basic的关键字和语法 7 ...

    基于海康威视最新SDK的COM控件

    基于海康威视 V4 2 8 1 build20140115 最新SDK开发的ActiveX插件DEMO 可用于Web 实现网页监控的二次开发 支持最新的IPCamera和DVR 开发语言:VS net 2010 VB net可转换成C#

    旧版浏览器支持 | 谷歌(Chrome)浏览器插件

    企业用户可能要借助多种不同的网络应用来工作,因此有时会需要使用两种浏览器:一种是安全、快捷且已按最新网络标准设计优化的现代浏览器,另一种则是可用来访问基于 ActiveX 或插件技术的旧版网络应用的浏览器。...

    基于RichEdit封装的ChatWidget聊天组件,含SDK

    ChatWidget.ocx是富文本信息输入框,为ActiveX插件。 基于COM技术开发,支持任何语言的调用。 并可以嵌入到WEB页面中使用 仅有三个接口,调用非常方便 1) 一个onSendChatMessages事件,在输入完内容,按发送按钮...

    DapperMap地图控件

    用户可以在面向对象的可视化编程语言(如VB、VB.NET、C#、Delphi、VC、C++Builder、FoxPro等)中,方便地插入DapperMap ActiveX , 轻松实现地理信息系统功能,地图精美表现、样式任意定制,丰富的标注设置、动画...

    优道图片版权保护控件

    技术实力过硬 C++ActiveX技术开发,支持嵌入到网页或桌面应用当中,支持各类编程语言调用; 功能齐全 附带有放大、缩小、旋转、水印、颜色定制等图片浏览器常用功能,支持通过JavaScript与网页进行交互; 各种语言...

    JS截屏控件

    同时新颖网络提供了ASP.NET(C#)和PHP的开发文档,和完善的ActiveX接口,您可以非常容易的使用和进行二次开发。最新版本的截屏控件极大的优化了图片数据传输的效率,可以帮助用户节省约40%的上传时间。 相信新颖网络...

    NTKO文档在线编辑控件4.0.1.2

    18 基于标准协议,无任何自定义数据格式,通用性好 基于标准协议的开发,使得合作伙伴无须担心技术的进步带来后续维护和开发风险。 19 支持从本地或服务器URL获取加密的电子印章 支持从本地和服务器将电子印章加入...

Global site tag (gtag.js) - Google Analytics