我已经能够创建一个小的activex控件,但它需要在客户端上注册dll(使用regasm)。
如何避免此注册问题?
我正在尝试编写一个通过网络(到IE浏览器)传送的activex控件,该控件将访问客户端网络摄像头(使用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
上阅读此内容如果我搞清楚,我会发布结果。
答案 0 :(得分:1)
COM对象,在按名称创建时,由存储在Windows注册表中的注册信息实例化。即使您的控件是在.NET中创建的,它也使用COM Interop来使用浏览器。没有先在用户的机器上注册它,就无法通过名称创建它。
您可以使用某种ClickOnce类型的传送系统,使得在客户端上的安装变得简单 - 但在所有情况下都必须注册。
答案 1 :(得分:1)
动态语言运行时(DLR)以及VS2010和.NET 4.0引入的互操作性进展应该会使这更容易。不需要COM互操作,无需注册等。Here's Anders Hejlsberg describing how it works。
你在.NET 4.0上试过这个吗?可以使用测试版。
我不确定从浏览器访问网络摄像头的安全隐患。但是从Javascript到C#应该很容易。