2009-05-29 13 views
3

私は小さなActiveXコントロールを作成できましたが、(regasmを使用して)DLLをクライアントに登録する必要があります。(C#で)自己登録のActiveXコントロールを作成するには?

どうすればこの登録の問題を回避できますか?

クライアントウェブカメラ(DirectShowを使用)にアクセスするウェブ(IEブラウザ)に配信される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"; 
     } 
     } 
    } 

そして、ここに私の視聴者:http://msdn.microsoft.com/en-us/library/aa751970(VS.85).aspx

私はよそれを把握した場合:

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

私は現在、MSDNでこれを読んでいます結果を投稿する。

+0

タグに 'dotnet'を使用しないでください。代わりに '.net'を使用してください。あなたの質問にタグを付ける際のプロンプトプロンプトに注意してください。おそらく名前を避けてください。 –

答えて

1

名前で作成されたCOMオブジェクトは、Windowsレジストリに格納されている登録情報によってインスタンス化されます。コントロールは.NETで作成されますが、COM Interopを使用してブラウザと連携します。最初にユーザーのマシンに登録することなく名前で作成する方法はありません。

ClickOnceタイプの配信システムを使用すると、クライアントへのインストールが簡単になる場合がありますが、すべての場合に登録する必要があります。

1

動的言語ランタイム(DLR)とVS2010と.NET 4.0で導入されたinteropの進歩により、はるかに簡単になります。 COM相互運用が必要なく、登録もありません。Here's Anders Hejlsberg describing how it works

.NET 4.0でこれを試しましたか?ベータ版が利用可能です。

ブラウザからWebカメラにアクセスすることのセキュリティ上の影響についてはわかりません。しかし、JavascriptからC#に移行するのは簡単です。

関連する問題