2009-05-29 64 views
3

我已經能夠創建一個小型的ActiveX控件,但它需要DLL註冊客戶端(使用regasm)。如何編寫自注冊的activex控件(在C#中)?

我該如何避免這種註冊問題?

我正在嘗試編寫一個通過Web(通過IE瀏覽器)傳遞的將訪問客戶端攝像頭(使用directshow)的ActiveX控件。

這裏是我的簡單的控制:

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

不要使用'dotnet'作爲標籤 - 而是使用'.net'。標註問題時請注意提示提示 - 應避免使用名稱後面的數字<10的任何標籤。 – 2009-06-05 14:19:30

回答

1

當通過名稱創建COM對象時,會通過存儲在Windows註冊表中的註冊信息實例化。即使您的控件是在.NET中創建的,它也會使用COM Interop與瀏覽器一起使用。沒有首先在用戶機器上註冊它的方法,就無法通過名稱創建它。

您也許可以使用某種ClickOnce類型的傳送系統,使客戶端上的安裝變得簡單 - 但在任何情況下都必須進行註冊。

1

隨着VS2010和.NET 4.0引入的動態語言運行時(DLR)和互操作性進步應該使這變得更容易。不需要COM互操作,不需要註冊等。Here's Anders Hejlsberg describing how it works

你在.NET 4.0上試過這個嗎?測試版可用。

我不確定從瀏覽器訪問攝像頭的安全含義。但從Javascript到C#應該很容易。

相關問題