zoukankan      html  css  js  c++  java
  • [转].c# 开发Active控件(一)

    首先,建立一个WinForm控件项目MyActive,并拖入一个Lable控件,文字设为HelloWorld,如图:

    此时编译项目,可以生成MyActive.dll,将些dll拷贝到IIS的虚拟根目录下,然后建立一个网页文件test.html,此网页文件的代码如下:

    <HTML>
    <HEAD>
      <TITLE>测试测试</TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
    </HEAD>
    <BODY>
      <object id="MyActive" classid="http://localhost/mp/MyActive.dll#MyActive.UserControl1" Width="184" Height="96" VIEWASTEXT></object>
    </BODY>
    </HTML>

    然后在IE地址栏中输入以下地址:http://localhost/mp/test.html,我们看到出现如下界面:

    此时,我们的控件第一步就已经完成了!

    但此时还未完在,只能在本机显示正常,如果换另一台机子就出显示一个红叉,或者弹出对话框说这个控件没有任何权限,所以必须声明这个控件必须使用赋予的权限,才可以显示出界面.

    我们在AssemblyInfo.cs中引用System.Security命名空间,并添加一句[assembly : AllowPartiallyTrustedCallers()]

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

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

    1:使用工具->创建GUID,生成一个GUID,并修改UserControl1.cs,首先增加引用System.Runtime.InteropServices命名空间,并在Demo前面加入一条语句[Guid("E017DDD5-35BC-4af5-A0FA-C55D4A43A03C")](这串是生成的GUID每次都不一样的,它是Active唯一的标识符),如图:

    2:修改项目属性,如下图:

    将为Com Interop注册由false改成true.

    3:重新编译,此时我们使用工具->OLE/COM对象查看器,就可以查看到自已注册的Active控件,如图:

    现在,我们已经可以像使用其它ActiveX控件一样在网页中显示了。在MyActive.UserControl1点击鼠标右键,如图:

    选择Copy HTML <object> Tag to Clipboard,可以将代码拷入剪贴板,现在我们将test.html的代码修改成如下:

    <HTML>
    <HEAD>
      <TITLE>测试测试</TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
    </HEAD>
    <BODY>
      <object id="MyActive" classid="clsid:E017DDD5-35BC-4AF5-A0FA-C55D4A43A03C" Width="184" Height="96" VIEWASTEXT></object>
    </BODY>
    </HTML>

    然后再在IE中打开这个网页,我们发现又可显示,这时就是真正的Active控件了.

    来源:http://hi.baidu.com/meteortent/blog/item/3e809c59af340d90800a18c4.html

  • 相关阅读:
    java -> final与static 关键字
    软件技术人员需要对数字的敏感性
    如何对抗放假综合症
    IT传统组织结构及新型扁平化组织
    别人的工作台系列三
    别人的工作台系列二
    外包公司做遗留项目有意思么?
    一些外国网站长时间不响应,点叉才能打开的问题
    别人的工作台系列
    2014年干了什么
  • 原文地址:https://www.cnblogs.com/tukzer/p/1900052.html
Copyright © 2011-2022 走看看