使用VS2008C_开发ActiveX控件

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VS2008C#ActiveX控件开发总结

——————EagleInSky

——————2010-1-13

一、前言

ActiveX控件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。使用ActiveX插件,可以轻松方便的在Web页中插入多媒体效果、交互式对象以及复杂程序等等。

通常使用C++或VB开发ActiveX控件,本文探讨一下在Visual Studio2008环境中使用C#开发ActiveX控件的技术实现。

工作的需要,最近学习了一下C#ActiveX的开发,参照网上众多的资料,发现在VS2008下开发ActiveX的资料较少,本人现在现在做一个笔记,以备后用。

其实用VS做一个ActiveX的安装项目,在客户机上双击运行安装.msi文件也是可以的,但是如果你的客户是在千里之外,难道每次更新的时候都要过去帮客户去安装吗?(客户毕竟有很多都不懂。)所以,手动安装实在是太不爽了。那么我们就实现一下ActiveX的自动安装吧。

二、开发环境

操作系统:Windows2003

开发工具:Visual Studio2008

.NET版本:3.5

开发语言:C#

三、实现过程

3.1运行Microsoft Visual Studio2008,新建解决方案如图3-1:

图3-1

给解决方案命名为:ActiveXTest如图3-2:

图3-2

3.2为解决方案添加一个Windows控件库项目,点击右键点击解决方案…如图3-3:

图3-3

并把控件库命名为ActiveX如图3-4:

图3-4

现在解决方案资源管理器的情况如图3-5:

图3-5

3.3更改项目属性:右键点击“ActiveX”如图3-6:

图3-6

在VS的工作区域出现了如下图的界面如图3-7:

图3-7

单击“程序集信息(I)…”弹出“程序及信息”如图3-8:勾选“使程序集COM可见(M)”

图3-8

选择“生成”选项卡,并勾选“为COM互操作注册(P)”如图3-9:

注意:此处是在debug状态下修改的,如果是调到release状态下,还需要再设置一下。

图3-9

3.4修改AssemblyInfo.cs文件如图3-10:

图3-10

引用命名空间:using System.Security;

添加:[assembly:AllowPartiallyTrustedCallers()]

AssemblyInfo.cs文件添加后如图3-11:

图3-11

3.5为控件(UserControl1.cs)添加内容

把UserControl1.cs重命名为你需要的名字。这里我命名为:ActiveX。

此ActiveX主要包括一个Button控件和一个TextBox控件,Button控件的Click事件是弹出一个MessageBox对话框,内容是TextBox中的内容。再添加一个公共方法。

这样做可以达到两个目的:

目的一:添加一个方法,供B/S前台程序直接调用,从而实现业务功能;

目的二:ActiveX控件可以提供B/S程序UI界面,可以响应B/S程序中对UI 的操作事件实现业务功能。

为ActiveX.cs添加命名空间:using System.Runtime.InteropServices;

首先:为控件创建GUID,这个编号将用于B/S系统的客户端调用时使用。

创建方法:工具—>创建GUID(G)如图3-12~3-13:

图3-12

图3-13

把GUID复制下来,放在Activex.cs类中:

namespace ActiveX

{

[Guid("59EA8A50-4FC1-406a-A471-595247AB2E41")]

public partial class UserControl1:UserControl {……

并添加Click方法,和公共方法ForDefault()

private void button1_Click(object sender,EventArgs e)

{

MessageBox.Show("您想说:"+this.textBox1.Text.ToString());

}

public string ForDefault()

{

return"此方法用于在前台调用,以表明前台页面可以用JS调用控件类中的方法!!!";

}

做到这一步之后,ActiveX类的情况如图3-14:

图3-14

其次:为了让ActiveX控件获取客户端的信任,控件类还需要实现一个名为“IObjectSafety”的接口。先创建该接口(注意:不能修改该接口的GUID值)。

创建接口:右键ActiveX工程—>添加—>新建项如图3-15~3-16:

图3-15

图3-16

复制以下代码到IObjectSafety.cs中的相应位置:

using System.Runtime.InteropServices;

namespace ActiveX

{

[ComImport,GuidAttribute("CB5BDC81-93C1-11CF-8F20-

00805F2CD064")]

[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] public interface IObjectSafety

相关文档
最新文档