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

如何编写自注册activex控件(C#)?

  •  3
  • chickeninabiscuit  · 技术社区  · 17 年前

    如何避免此注册问题?

    我正在尝试编写一个activex控件,该控件通过web(IE浏览器)交付,用于访问客户端网络摄像头(使用directshow)。

    以下是我的简单控件:

      using System;
      using System.Runtime.InteropServices;
      namespace HelloNS
      {
          public interface IHello
          {
            string Message();
          }
    
          [ClassInterface(ClassInterfaceType.AutoDual)]
          public class Hello : IHello          {
            public string Message()
            {
                return "hello";
            }
          }
       }
    

    这是我的观众:

    <html>
    <head>
      <script language="javascript">
        var x = new ActiveXObject("HelloNS.Hello");
        alert(x.Message());
      </script>
    </head>
    <body>
    </body>
    </html>
    

    我目前正在msdn上阅读以下内容: http://msdn.microsoft.com/en-us/library/aa751970(VS.85).aspx

    如果我弄明白了,我会公布结果的。

    2 回复  |  直到 17 年前
        1
  •  1
  •   Paul Alexander    17 年前

    COM对象在按名称创建时,由存储在Windows注册表中的注册信息实例化。即使控件是在.NET中创建的,它也使用COM互操作与浏览器一起工作。如果不先在用户的机器上注册它,就无法按名称创建它。

        2
  •  1
  •   Cheeso    17 年前

    VS2010和.NET4.0中引入的动态语言运行时(DLR)和互操作技术应该会使这一过程更加容易。无需COM互操作,无需注册等。 Here's Anders Hejlsberg describing how it works .

    你在.NET4.0上试过这个吗?测试版是可用的。

    我不确定从浏览器访问网络摄像头的安全性。但是从Javascript到C#应该很容易。

    推荐文章