Erstellen Sie COM / ActiveXObject in C #, verwenden Sie es aus JScript, mit einfachem Ereignis
Ich möchte ein COM-Objekt in C # erstellen und es über IDispatch aus JScript verwenden. Dieser Teil ist ziemlich einfach.
Ich möchte auch einfache Rückrufe für das COM-Objekt implementieren, ähnlich dem Ereignis, das vom XmlHttpRequest-Objekt verfügbar gemacht wird, das in einem Browser verwendet werden kann. Mit diesem Modell kann Javascript Ereignishandler wie diesen anhängen:
var xmlhttp = new ActiveXObject("MSXML.XMLHTTP");
xmlhttp.onReadyStateChange = function() {
...
};
Ich möchte, dass mein clientseitiger JScript-Code so aussieht:
var myObject = new ActiveXObject("MyObject.ProgId");
myObject.onMyCustomEvent = function(..args here..) {
...
};
Wie sieht der C # -Code aus? Ich möchte den allgemeinen Fall - Ich möchte in der Lage sein, Argumente an das Javascript fn zurückzugeben.
Ich habe gesehenWie kann ich ein ActiveX-Steuerelement erstellen, das mit C # geschrieben wurde, um Ereignisse in JavaScript auszulösen, wenn Sie darauf klicken? , aber die Antworten dort sehen wirklich kompliziert in der Implementierung und in der Verwendung aus.
VonDieser BeitragEs scheint, dass XMLHttpRequest-Ereignisse keine COM-Ereignisse sind. Dasonreadystatechange
ist eine Eigenschaft vom TypIDispatch
. Wenn Script-Clients diese Eigenschaft auf eine Funktion setzen, stellt JScript sie als IDispatch-Objekt bereit.
Das einzige verbleibende Problem besteht darin, das IDispatch über C # aufzurufen.