快速业务通道

将自定义.NET控件实现COM对象接口嵌入IE浏览器

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-12

没有安全授权,不安全的代码将无法执行。比如点击按钮,我们可以得到如下提示。

有意思的是,只要该控件在装载时没有不安全代码,IE就不会有任何的提示,不同于IE
对加载ActiveX时的安全警告。这样说明IE对.NET的代码安全性是交给FrameWork处理
的。因此此类控件也有一种用处,就是不必数字签名,就可以加载显示在用户的IE浏览
器中,并顺利执行安全的受控代码。当然前提是用户需要安装.NET FrameWork。

此时我们还是没有得到一个真正的ActiveX控件,虽然它可以通过IIS发布在Web页面
中,也可以执行安全的代码。但存在如下局限性:无法发布到其他Web服务器上、无法
访问本地资源、js脚本无法响应控件的事件等。

下一篇我们将讨论.NET自定义控件如何实现所有的COM对象接口,包括属性、方法、事
件。并利用js脚本在Web页面中形成互动。
这次我们将讨论.NET自定义控件如何实现所有的COM对象接口,包括属性、方法、事件。并利用js脚本在Web页面中形成互动。
按照上一篇我们介绍的将.NET控件添加COM特性后,VS.NET已经自动注册了该控件的属性、方法和事件,只是还需要我们实现事件接口。
为了实现事件接口,我们需要添加如下代码:
    [ComVisible(true)]
    [Guid("43BCDB16-0281-487b-BB53-997546122442")]
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface UserControl1Events
    {
        [DispId(0)]
        void OnButtonClick(string SendMsg);
    }
为了保证Guid的有效性,我们可以使用VS.NET的Create GUID工具创建。接口中的方法就是我们要触发的事件函数。该函数的声明要参照我们控件中的事件,名称必须保持一致。
        public event ButtonClickHandler OnButtonClick;
下一步我们就是要为我们的控件类创建Guid,并实现上面声明的事件接口。这里我们不要试图去实现事件接口,而是要用属性的方式去引用该COM接口。
    [Guid("FBA0FCC2-D75F-40a5-9C8C-1C9D03813731")]
    [ComSourceInterfaces(typeof(UserControl1Events))]
    public partial class UserControl1 : UserControl
    {
Build后我们已经得到一个具有公共属性、方法和事件的COM控件了。 
我们创建html文件来测试新的ActiveX控件,代码如下:
<HTML>
<HEAD>
  <meta http-equiv="Content-Type" content="text/html; charset=GBK">
</HEAD>
<script language=''javascript'' for=''usercontrol1'' event=''OnButtonClick(Message)''>
    alert("响应ActiveX触发的事件成功。"+Message);
  window.defaultStatus = "OnButtonClick()";
</script>
 
<body>
<object id="usercontrol1" classid="clsid:FBA0FCC2-D75F-40a5-9C8C-1C9D03813731">
</object>
<br> <br> <br> <br>
<input type=''button'' value='' 调用ActiveX方法'' onclick=''usercontrol1.SetText("Hello World!");''>
<br> <br> <br> <br>
<input type=''button'' value='' 设置ActiveX属性'' onclick=''usercontrol1.ButtonCaption = "Set";''>
 
</HTML>
这次我们不再需要IIS,可以直接运行该html文件。可以得到下面的结果: 
我们的.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号