vs2010 c# activex 开发

在我仔细看完上边三篇文章之后,发现有用Vs2010开发的,如果想快速学习,可以参考下边的文章。
    .NET环境下创建 Activex        http://www.cnblogs.com/liulixiang/archive/2011/05/23/2054371.html
    使用VS2010  C# 开发 ActiveX 控件(上)  http://www.cnblogs.com/yungboy/archive/2011/01/10/1932433.html

    使用VS2010 C#开发ActiveX控件(下),完整代码下载  http://www.cnblogs.com/yungboy/archive/2011/01/11/1932438.html

下边对学习的内容进行总结,主要是对我参考的文章不足部分进行修改。

一. 建立ActiveX控件(暂时称为ActiveX控件,其实是winform下的用户控件)。

1.打开vs2010,新建空年方案。方案名称自己取。

   然后,新建项目->Visual C#->Windows->类库,名称为HelloWorld。

2. 删除自动创建的Class1.cs文件,然后在HelloWorld上右键->添加->新建项,在弹出的窗口中选择“用户控件”,名称为Demo,此时会出现一个类似于winform设计界面,我们在上面从工具箱中拖动一个Label在上面,并设定Label的Text为"HelloWorld"。

此时编译项目,可以生成HelloWorld.dll。 将此dll拷贝到IIS的虚拟根目录下,然后在虚拟目录的物理目录下建立一个helloworld.htm的文件,html代码如下:


<body bgcolor='#223344'>
<object id="helloworld" classid=’http://localhost/HelloWorld.dll#HelloWorld.Demo’ Width="184" Height="96" VIEWASTEXT> </object>
</body>
复制代码

    注:我们可以在Object的classid中使用“http://localhost/类.dll#命名空间.类名”这样的方式使用未注册的控件(此时还不能称为ActiveX)。

3、测试:在IE地址栏中输入以下地址:http://localhost/helloworld.htm,出现下图界面,控件已经成功在页面上显示了。OK,我们已经完成了第一步。

 

     但是问题到这里还没有解决。不相信?你可以试试在另外一台机器上测试,注意需要修改对应的html代码和URL地址。你可以看到这个在原来显示控件的地方是一个红色的叉,或者还会弹出一个对话框,表示这个控件没有任何权限。出现这个结果是微软的默认设置造成的,必须在控件项项目中Properties下AssemblyInfo.cs中增加一个安全声明,声明这个控件必须使用赋予的权限,才可以显示出界面。添加语句如下:


//设置控件的权限
[assembly: System.Security.AllowPartiallyTrustedCallers()]
复制代码

     现在重新编译,并且替换以前的dll,界面又可以显示出来了。

 

    到现在为止,我们编写的还不是真正的ActiveX控件。这个控件只是能够实现自身的显示,并且不能实现更多的功能,比如实现与脚本的交互或者操作客户端的注册表或者磁盘。这如果我们希望这个控件突破.Net Framework安全模型的限制,实现与脚本的交互或者操作客户端的注册表或者磁盘的话,必须要让它成为真正的ActiveX控件。


二. 将用户控件变成Com可见

    1.在HelloWorld(用户控件)项目上点击右键,选择属性,将打开项目属性面板,选择应用程序标签页,点击“程序集信息”按钮,在弹出的窗口中勾选“使程序集COM可见”(下图为别人的图片,仅供参考)


10

11
    2.切换到生成标签页,然后勾选“为Com互操作注册”,在该页面的最上面,有一个配置选项,切换到realse,并再次勾选“为Com互操作注册”。这样无论是在debug还是在release状态下,都可以把用户控件当做com接口使用。如下图。(如果不使用realse模式,realse可以不设置。)

 


12

     注意:在Win7中,沟选“为Com互操作注册”后,如果不是Administrtor用户,编译项目会出错。所以一定要记得在Administrator下编写代码。

 

3、修改用户控件后台代码,代码如下, 


using System.Runtime.InteropServices;
namespace HelloWorld
{

 [Guid("F3F99F87-276D-4F7C-96F9-85F5261773CD")]
 public partial class Demo: UserControl
{
}

http://blog.163.com/tom19900920@126/blog/static/2349868720121195250522/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值