VS2008 C# 开发ActiveX控件总结

引自 博文 http://www.cnblogs.com/top5/archive/2010/04/11/1709449.html

一个项目要用到ActiveX控件,参照网上众多的例子,ActiveX控件倒是很容易就搞出来了; 
然后做了一个【安装项目】,倒是可以使用,只不过需要在客户端手动点击安装,下一步,下一步…觉得不是很爽; 
又试了试【CAB项目】,好像没人用VS2008来做,费了点功夫,终于找到解决办法。 
特将此经验与大家分享。

开发工具:Visual Studio 2008 
.NET版本:2.0 
开发语言:C#

一、编写ActiveX控件 
1、新建一个【Windows窗体控件库项目】 

2、添加一个【用户控件】 
添加用户控件

3、拖两个Label控件到界面上 
拖两个Lable控件

4、为控件添加一个方法,用来设置在Label中显示当前时间

 

复制代码
  
  
/// <summary>
/// 设置当前时间
/// </summary>
/// <param name="timeStr"></param>
public void SetTime( string timeStr)
{
this .label2.Text = timeStr;
}
复制代码

 

 

 

5、新建一个接口: 
据说实现该接口的目的就是提高程序的安全性,以便客户端IE在不更改设置的情况下可以预行该ActiveX控件。 
关于这个有篇文章,推荐大家看看:

http://blog.csdn.net/optman/archive/2007/07/18/1698070.aspx

 

复制代码
  
  
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace HelloBossma
{
[ComImport, GuidAttribute(
" CB5BDC81-93C1-11CF-8F20-00805F2CD064 " )]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
public interface IObjectSafety
{
[PreserveSig]
int GetInterfaceSafetyOptions( ref Guid riid, [MarshalAs(UnmanagedType.U4)] ref int pdwSupportedOptions, [MarshalAs(UnmanagedType.U4)] ref int pdwEnabledOptions);

[PreserveSig()]
int SetInterfaceSafetyOptions( ref Guid riid, [MarshalAs(UnmanagedType.U4)] int dwOptionSetMask, [MarshalAs(UnmanagedType.U4)] int dwEnabledOptions);
}
}
复制代码

    6、让我们的控件实现这个接口 
    关于实现这个接口,篇幅较长,可以在这篇文章找到:

    http://www.pinvoke.net/default.aspx/Interfaces/IObjectSafety.html

    7、为我们的控件添加Guid、ProgId和ComVisible属性

     

    复制代码
      
      
    namespace HelloBossma
    {
    [Guid(
    " 636B8CE1-7512-464C-B63C-FC75BDCA21DB " ), ProgId( " HelloBossma.HelloBossmaActiveX " ), ComVisible( true )]
    public partial class HelloBossmaActiveX : UserControl, IObjectSafety
    {
    ...
    }
    }
    复制代码

     

     

       

      8、打开项目属性,在生成里边,勾选【为Com互操作注册】 
      Com互操作注册

      9、生成项目,进入到bin\Release目录下可以看到 
      HelloBossma.dll 
      HelloBossma.tlb 
      这两个文件时必须的,否则生成不成功。

       

       

       

       

      二、制作ActiveX Setup安装文件 
      1、新建一个安装项目 
      安装项目

      2、在项目上点右键,【添加】->【项目输出】,选择上边的项目 
      安装项目输出

      3、打开安装项目的属性页面,设置安装URL 
      这里设置为:http://localhost/hellobossma 
      这个目录必须是实际存在的,用来存放生成的安装文件,供客户端下载安装。

      4、生成项目 
      会生成两个文件,一个exe文件和一个msi文件

      5、新建一个网站,添加如下代码到网页中。 
      其中classid即为控件的Guid。

       

        
        
      < object classid ="clsid:636B8CE1-7512-464C-B63C-FC75BDCA21DB" codebase ="hellobossma/setup.exe#version=1,0,0,0" width ="200" height ="40" id ="helloBossma" >
      </
      object >

       

       

       

        6、将安装项目生成的exe和msi文件拷贝到网站hellobossma目录中。 
        HelloBossmaSetup.msi 
        setup.exe

        7、启动网站,确保访问setup.exe的目录与【安装项目】中的【安装URL】一致。

        8、一般情况下,网页会弹出提示,是否安装ActiveX控件等,如果提示了也不能安装,需要将网站添加到信任站点,并允许下载不安全和未签名控件。关于控件的签名和认证,本文不做说明,需要的请自行搜索。 
        安装ActiveX控件

        使用这种安装方法,会在客户端弹出安装软件的界面,对客户来说,不太友好。

        三、制作ActiveX CAB安装包 
        尝试了VS中的【CAB项目】模板,但是不幸的是,控件怎么也安装不上,放弃。 
        在网上看到很多人使用CABARC.EXE,试了一下,居然成功了,特将过程记录下来。

        1、下载这个程序包,可以从微软下载,地址: 
        http://download.microsoft.com/download/platformsdk/cab/2.0/w98nt42kmexp/en-us/cabsdk.exe 
        解压这个文件,里边有详细的使用说明。

        2、【开始】-【运行】,输入“CMD”,在打开的命令提示符界面中,进入解压后文件的BIN目录,

        这里需要加入两个文件: 
        HelloBossmaSetup.msi 
        install.inf

        HelloBossmaSetup.msi 是上边的安装项目生成的安装程序。 
        install.inf是一个文本文件,指定运行控件所需要下载或者呈交的文件。

        关于inf文件的书写规范,这里不做介绍,有需要的可以自己搜一下。 
        这个例子中install.inf文件的内容

         

        复制代码
          
          
        [ version ]
        signature
        = " $CHICAGO$ "
        AdvancedINF
        = 2.0

        [ Setup Hooks ]
        hook1
        = hook1

        [ hook1 ]
        run
        = msiexec.exe /i " %EXTRACT_DIR%\HelloBossmaSetup.msi " /qn
        复制代码

         

         

        有了这两个文件,运行下边的命令,成功的话会在当前目录生成HelloBossma.cab文件。 
        CABARC

        3、把这个文件放到控件下载目录中,然后修改网页中的调用方式。

         

          
          
        < object classid ="clsid:636B8CE1-7512-464C-B63C-FC75BDCA21DB" codebase ="hellobossma/HelloBossma.CAB" width ="442" height ="49" id ="helloBossma" >
        </ object >
        < input type ="button" value ="Click" onclick ="helloBossma.SetTime((new Date()).getTime())" />

         

         

        这里还添加了一个按钮,点击时触发一个事件,调用控件的显示时间方法,点击按钮,你会发现控件上时间的变化。 
        23

        OK,这篇文章到这里正文就结束了。 
        只是简单了解下使用C#开发ActiveX控件


        • 0
          点赞
        • 0
          收藏
          觉得还不错? 一键收藏
        • 0
          评论
        第1章 可调节类控件 1.1 Datetimepicker控件 1.1.1 CalendarFont属性 1.1.2 CalendarForeColor属性 1.1.3 CalendarMonthBackground属性 1.1.4 CalendarTitleBackColor属性 1.1.5 CalendarTitleForeColor属性 1.1.6 CalendarTrailingForeColor属性 1.1.7 CustomFormat属性 1.1.8 Location属性 1.1.9 Region属性 1.1.10 ShowUpDown属性 1.1.11 ShowCheckBox属性 1.1.12 Size属性 1.1.13 Value属性 1.1.14另外2种显示时间和日期的方法 1.2 MonthCalendar控件 1.2.1属性说明 1.2.2应用举例 1.3 NumericUpDown控件 1.3.1 Anchor属性 1.3.2 AutoSize属性 1.3.3 CausesValidation属性 1.3.4 其他常用属性 第2章 选择类控件 2.1 RadioButton控件 2.1.1 AllowDrop属性 2.1.2 Anchor属性 2.1.3 AutoEllipsis属性 2.1.4 设置控件背景的属性 2.1.5 FlatStyle和FlatAppearance属性 2.1.6 Image类属性 2.1.7 UseWaitCursor属性 2.1.8 UseVisualStyleBackColor属性 2.1.9 ContextMenuStrip属性 2.1.10 TextlmageRelation属性 2.2 CheckBox控件 2.3 CheckedListBox控件 2.3.1 CausesValidation属性 2.3.2 CheckOnClick属性 2.3.3 ColumnWidth属性 2.3.4 Cursor属性 2.3.5 Dock属性 2.3.6 FormatStrin9和FormattingEnabled属性 2.3.7 HorizontalScroUBar和HorizontalExtent属性 2.3.8 ImeMode属性 2.3.9 IntegralHeight属性 2.3.10 Items属性 2.3.11 MaximumSize和MinimumSize属性 2.3.12 MultiColumn属性 2.3.13 RightToLefl属性 2.3.14 ScrollAlwaysVisible属性 2.3.15 SelectionMode属性 2.3.16 Sorted属性 2.3.17 ThreeDCheckBoxes属性 2.3.18 UseCustomTabOffsets属性 第3章 显示类控件 3.1 TextBox控件 3.1.1 AcceptsRetum属性 3.1.2 AcceptsTab属性 3.1.3 AutoCompleteCustomSource属性 3.1.4 AutoCompleteMode属性 3.1.5 AutoCompleteSource属性 3.1.6 CharacterCasin9属性 3.1.7 HideSelection属性 3.1.8 Lines和Multiline属性 3.1.9 MaxLength属性 3.1.10 PasswordChar属性 3.1.11 ScrollBars属性 3.1.12 UseSystemPasswordChar属性 3.1.13 WordWrap属性 3.2 RichTextBox控件 3.2.1 Lines属性 3.2.2 ScrollBars属性 3.2.3 AutoWordSelection属性 3.2.4 Bulletlndent属性 3.2.5 SelectionFont属性 3.2.6 DetectUrls属性 3.2.7 EnableAutoDragDrop属性 3.2.8 ShortCutsEnabled属性 3.2.9 ShowSelectionMargin属性 3.2.10 ZoomFactor属性 3.3 LinkLabel控件 …… 第4章 组合类控件 第5章 容器类控件 第6章 菜单和工具栏类控件 第7章 数据控件 第8章 .NET环境下组合类控件 第9章 打印类控件 第10章 对话框类控件 第11章 水晶报表控件 第12章 多媒体播放控件 第13章 自定义控件
        评论
        添加红包

        请填写红包祝福语或标题

        红包个数最小为10个

        红包金额最低5元

        当前余额3.43前往充值 >
        需支付:10.00
        成就一亿技术人!
        领取后你会自动成为博主和红包主的粉丝 规则
        hope_wisdom
        发出的红包
        实付
        使用余额支付
        点击重新获取
        扫码支付
        钱包余额 0

        抵扣说明:

        1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
        2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

        余额充值