使用VS2008C_开发ActiveX控件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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