您的位置:首页 > 编程语言 > C#

{VS2010C#}{WinForm}{ActiveX}VS2010C#开发基于WinForm的ActiveX控件

2014-02-18 23:50 302 查看

在VS2010中使用C#开发基于WinForm的ActiveX控件

常见的一些ActiveX大部分是使用VB、Delphi、C++开发,使用C#开发ActiveX要解决下面三个问题:

使.NET组件可以被COM调用

在客户机上注册后,ActiveX控件能通过IE的安全认证

已在客户机上注册时,安装包能通过IE的签名认证

配置:win 7,VS2010

步骤第一步,创建控件

1.创建WinForm控件,命名为WebForm,如图1:



2.设置项目的Assembly属性,如图2所示,并对Make Assembly Com-Visible选项划钩



并且设置项目的编译选项,如图3所示,对Register for COM Interop选中对COM组件进行注册。(注意,此处如果实在debug状态下修改的,那在调到release状态下还需要再设置一次。)



3.打开AssemblyInfo文件添加引用 using System.Security; 并且添加 [assembly: AllowPartiallyTrustedCallers()] 语句

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;   //note!

// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("WebForm")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("WebForm")]
[assembly: AssemblyCopyright("Copyright ©  2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

[assembly: AllowPartiallyTrustedCallers()]   // note!


4.为控件类创建一个唯一的GUID,注意这里的GUID不能和AssemblyInf中的GUID相同,生成GUID的方法如下

使用Microsoft Windows SDK Tools中的GUID Generator生成新的GUID,如图



COPY生成的GUID到记事本,再拷贝GUID的字符串到控件类,并添加引用 using System.Runtime.InteropServices;

using System.Runtime.InteropServices;    // note !

namespace WebForm
{
[Guid("575483BC-7224-44F5-A77C-78AB7FC4E606")]    // note!

public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}

}
}


第二部分,打包发布ActiveX控件

5.ActiveX控件可以使用VS 2010的安装项目进行部署,使用VS 2010创建Windows Form的安装工程就可以将ActiveX的dll进行打包。在打包时注意将ActiveX控件项目作为主输出项目,并设置其Register属性为vsdrpCOM,创建打包项目如下图5所示:



之后添加项目输出,如下图



6.设置项目属性,如下图,文件名就是打包后安装文件.MSI的文件名。设置包文件、压缩方式,CAB size,这三项均选择默认值即可。

最后设置安装URL,这里的安装URL是用来发布或者测试ActiveX的URL地址的,我们设置为本地url:K:/VSProject/WebForm/Setup/Debug/



7. 将之前的WebForm.dll打包进ActiveX控件。

将WebForm.dll放入包中,如下图,build solution之后,便会出现Setup.exe和Setup.msi两个文件,其中Setup.exe就是我们在使用ActiveX时的codebase文件。



8.测试基于WinForm的ActiveX控件。新建一个htm文件,输入如下代码并保存:

其中id为建立的控件类名,classid为步骤中生成的Guid,codebase为本地的ActiveX安装源,如果做服务器可以修改为ip源等,这里暂不赘述。

<object id="UserControl1"
classid="clsid:575483BC-7224-44F5-A77C-78AB7FC4E606"
width="500"
height="500"
codebase="K:/VSProject/WebForm/Setup/Debug/Setup.exe">
</object>


测试结果

如图,由C#创建的基于WinForm的控件可以正确的显示在IE Explorer中



参考资料

http://www.cnblogs.com/yungboy/archive/2011/01/10/1932433.html
http://homer.cnblogs.com/archive/2005/01/26/97822.aspx http://www.cnblogs.com/Charles2008/archive/2010/04/11/1709844.html http://www.cnblogs.com/homer/archive/2005/01/04/86473.html http://www.cnblogs.com/homer/archive/2005/01/08/88780.html http://www.cnblogs.com/homer/archive/2005/01/08/88780.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: