2009-05-29 1 views
3

Ich konnte ein kleines ActiveX-Steuerelement erstellen, aber es erfordert die Registrierung der DLL auf dem Client (mit regasm).Wie schreibe ich ein selbstregistrierendes Activex-Steuerelement (in C#)?

Wie kann ich dieses Registrierungsproblem vermeiden?

Ich versuche, ein ActiveX-Steuerelement zu schreiben, das über das Web (in IE-Browsern) bereitgestellt wird, das auf die Client-Webcam zugreift (mithilfe von DirectShow).

Hier ist meine einfache Steuerung:

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"; 
     } 
     } 
    } 

Und hier ist mein Zuschauer:

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

ich zur Zeit der Lektüre dieses auf Msdn: http://msdn.microsoft.com/en-us/library/aa751970(VS.85).aspx

Wenn ich es herausfinden ich werde es tun Veröffentlichen Sie die Ergebnisse.

+0

Verwenden Sie 'dotnet' nicht als Tag - verwenden Sie stattdessen '.net'. Bitte beachten Sie die Vorschläge, wenn Sie Ihre Frage markieren - ein Tag mit einer Zahl <10 nach dem Namen sollte wahrscheinlich vermieden werden. –

Antwort

1

COM-Objekte werden, wenn sie mit Namen erstellt werden, durch Registrierungsinformationen instanziiert, die in der Windows-Registrierung gespeichert sind. Obwohl Ihr Steuerelement in .NET erstellt wird, verwendet es COM Interop, um mit dem Browser zu arbeiten. Es gibt keine Möglichkeit, den Namen zu erstellen, ohne ihn zuvor auf dem Computer des Benutzers zu registrieren.

Sie könnten mit einem ClickOnce-Delivery-System arbeiten, das die Installation auf dem Client vereinfacht - aber in jedem Fall muss es registriert werden.

1

Die Dynamic Language Runtime (DLR) und die Einführung von Interop, die mit VS2010 und .NET 4.0 eingeführt werden, sollten dies erheblich erleichtern. Kein COM-Interop erforderlich, keine Registrierung usw. Here's Anders Hejlsberg describing how it works.

Haben Sie dies auf .NET 4.0 versucht? Die Beta's sind verfügbar.

Ich bin mir nicht sicher über die Sicherheitsauswirkungen beim Zugriff auf eine Webcam über den Browser. Aber von Javascript zu C# zu kommen sollte einfach sein.