代码之家  ›  专栏  ›  技术社区  ›  rix0rrr

在中创建和部署ActiveX控件。导航战鉴定小组

  •  5
  • rix0rrr  · 技术社区  · 16 年前

    因为显然没有 Flash control that can accept bitmap pastes ,我想自己写一个。我宁愿不使用Flash,所以我想使用。网。

    现在,我认为可以在浏览器中下载和运行的本机代码控件的正确术语是“ActiveX控件”。所以我的问题是,我可以用创建这样的ActiveX控件吗。网?

    我在网上找到了一些教程,但他们都希望你在本地计算机上安装程序集,并注册和信任它和访问它的网站。

    这对潜在的匿名互联网用户来说要求有点高,即使对于内联网用户来说,另一种部署方法也是可取的。

    我清楚地记得有个网站要求我下载这个或那个ActiveX控件。在需要Flash和Java等浏览器插件的页面上,浏览器可以通过某种机制知道在哪里获取该媒体类型的插件。

    所以我的问题是双重的:

    • 我可以在中创建一个可以在用户浏览器中运行的控件吗。网?
    • 我能实现的(半)自动交付的最佳方法是什么?

    针对Sunny:

    是的,很多JavaScript富文本编辑器允许您粘贴 链接图像 并且它将插入正确的<img>标签。然而,这只适用于已经在网络上有位置的图像,我希望通过从剪贴板复制/粘贴任何随机位图来上传新图像。

    3 回复  |  直到 8 年前
        1
  •  5
  •   Tony Lee    12 年前

    如果你只接受IE,我喜欢IE托管控件在Active-X上的安全模型,但是,从2009年1月1日起,微软不再使用。NET(正在进行中)扩展IE,因此XBAP是可以的,但不能用于ActiveX控件或IE托管控件。

    更新7/13:微软已发布 guidance on implementing in-process extensions ;它仍然被弃用。

    编辑:不调整注册表,IE8只会加载一个。NET托管的控件来自内联网或受信任区域,因此对于一般的互联网使用,需要Active-X进行浏览器内完全信任访问。

    跟进Russ的帖子:Silverlight无法访问剪贴板: http://silverlight.net/forums/t/13024.aspx

    大多数IE托管的控件信息都在博客中,所以我使用: http://www.google.com/search?q=ie+hosted+control+site:msdn.com 找到他们。下面是我发现特别有用的。

    快速简单的控制: http://blogs.msdn.com/mikechr/archive/2006/11/28/writing-a-simple-managed-control-under-ie.aspx

    关于安全性,奇怪的是,除非“证据”是一个url,否则程序集可能是可信的,但域是不可信的,需要断言来修复: http://blogs.msdn.com/carloc/archive/2006/11/01/code-access-security-hosting-control-in-ie.aspx

    这在3.5的清单中是“固定的”。这很难做到正确,所以请参阅Shawnfa的清单使用说明。NET安全博客 .NET 3.5 Beta post GA .NET 3.5 Todd的随机发现博客也记录了 steps for creating a manifest for a hosted control

    我从一篇关于设置安全性的知识库文章中发现了这一点,但您仍然需要了解很多关于CAS的信息: http://support.microsoft.com/kb/892466 这可能是决定使用(.net)Active-X与IE托管控件时的主要考虑因素,即哪种安全模型最适合您和您的用户。我希望使用清单将使IE托管的控件像点击一次一样工作,用户被要求“信任”,系统会创建正确的设置。对于我的公司来说,我们使用的可以自动为用户设置安全性,因此ie托管是我们的选择。

    我从未想过的一件事是,我是否必须从(User)控件继承无ui控件。这样做对我来说效果更好,但我必须“隐藏”对象标签所在的div。

    如果你编译以进行调试,并在加载控件后连接到IE进行“托管”调试,那么调试控件就很容易了。如果无法加载控件,请在融合程序集绑定查看器上查找信息: http://msdn.microsoft.com/en-us/library/e74a18c4.aspx 以及如何打开IEHost跟踪: http://support.microsoft.com/kb/313892 以便调试加载过程。

    确保对程序集的每个版本都进行版本控制。如果你不这样做,那么IE会感到困惑,当下载缓存中的程序集与url引用的程序集不同但版本号相同时,IE不会加载控件(gacutil/cdl会清除.net下载缓存)

        2
  •  2
  •   Russ    16 年前

    查找“IE中托管的Winforms”。几年前我不得不做类似的事情,这就是我最终能够取得一些进展的地方。

    有两点需要注意:正如你可能已经注意到的,这个问题并不经常出现,所以例子有限。(我再也没有可以分享的了,很抱歉)。另外。NET的安全模型与基于COM的ActiveX有很大不同,因此在IE的不同安全区域中实现这一点有点棘手。

    如果你有能力使用Silverlight 2,我可能会倾向于这个方向。

        3
  •  0
  •   Sunny Milenov    16 年前

    使用ActiveX仅限于IE和Windows。最好看看谷歌文档和/或gmail,看看它们是如何仅使用javascript在您的电子邮件/在线文档中粘贴图像的。适用于大多数浏览器和操作系统。

    推荐文章