C#开发ActiveX控件及制作CAB包

来源:互联网 发布:淘宝国产手机 编辑:程序博客网 时间:2024/05/25 23:28
一个项目要用到ActiveX控件,参照网上众多的例子,ActiveX控件倒是很容易就搞出来了;

然后做了一个【安装项目】,倒是可以使用,只不过需要在客户端手动点击安装,下一步,下一步…觉得不是很爽;

又试了试【CAB项目】,好像没人用VS2008来做,费了点功夫,终于找到解决办法。(文/bossma)

特将此经验与大家分享。

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

一、编写ActiveX控件

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


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


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


4、为控件添加一个方法,用来设置在Label中显示当前时间
  1.   1. /// <summary>
  2.   2.        /// 设置当前时间
  3.   3.        /// </summary>
  4.   4.        /// <param name="timeStr"></param>
  5.   5.        public void SetTime(string timeStr)
  6.   6.        {
  7.   7.            this.label2.Text = timeStr;
  8.   8.        }
复制代码
5、新建一个接口
据说实现该接口的目的就是提高程序的安全性,以便客户端IE在不更改设置的情况下可以预行该ActiveX控件。

关于这个有篇文章,推荐大家看看:关于IObjectSafety和ActiveX组件的脚本安全
  1.   1. using System;
  2.   2. using System.Collections.Generic;
  3.   3. using System.Text;
  4.   4. using System.Runtime.InteropServices;
  5.   5.
  6.   6. namespace HelloBossma
  7.   7. {
  8.   8.    [ComImport, GuidAttribute("CB5BDC81-93C1-11CF-8F20-00805F2CD064")]
  9.   9.    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
  10.   10.    public interface IObjectSafety
  11.   11.    {
  12.   12.        [PreserveSig]
  13.   13.        int GetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] ref int pdwSupportedOptions, [MarshalAs(UnmanagedType.U4)] ref int pdwEnabledOptions);
  14.   14.
  15.   15.        [PreserveSig()]
  16.   16.        int SetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] int dwOptionSetMask, [MarshalAs(UnmanagedType.U4)] int dwEnabledOptions);
  17.   17.    }
  18.   18. }
复制代码