2012-07-17 17 views
5

Voglio chiamare un metodo di una DLL da javascript.Chiama i metodi DLL da Javascript

Ho seguito questo articolo Creating activex objects with c#

Dal ActiveX funziona solo in IE, come dovrei essere in grado di chiamare quei metodi da JavaScript in Firefox o Chrome?

Ho già un'applicazione che utilizza l'oggetto ActiveX per chiamare i metodi Dll, ma funziona solo in IE.

Esiste un modo possibile per rendere indipendente il browser dell'applicazione?

AGGIORNATO

ho usato Jquery asincrone AJAX e webservice per chiamare i metodi DLL:

var to_return = $.ajax({ 
     type: "POST", 
     url: "Default.aspx/CallMe", //CallMe is WebService method 
     data: "{}", // parameter to pass 
     async: false, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
    }); 

    alert(to_return.responseText); 

If CallMe() restituisce una stringa che viene segnalata come { "d": "True"} dove "True" è la stringa restituita da CallMe.

Come posso ottenere solo una stringa restituita da esso?

Inoltre, se il metodo CallMe() di webservice restituisce un oggetto di una classe presente in quella DLL? Come posso recuperare quell'oggetto in JavaScript? e Potrò chiamare metodi di quella classe usando quell'oggetto restituito?

Si prega di aiuto.

+0

duplicato? http://stackoverflow.com/questions/9430619/calling-a-dll-function-from-a-html-page-that-runs-on-chrome-and-firefox?rq=1 – rene

risposta

2

Non è possibile eseguire un metodo dll nel browser (ciò avviene per motivi di sicurezza).
Al fine di eseguire del codice compilato in del browser si dovrà utilizzare un ActiveX plugin

è solo un metodo di implementazione plugin per il browser in IE. Tutti gli altri browser utilizzano interfacce plugin diverse.
Quindi, se l'utente installerà il plug-in nel browser, questo plug-in sarà disponibile da JS e sarà possibile utilizzarlo per eseguire alcune funzioni in dll.

+0

grazie VitaliyG. Attualmente sto usando questa opzione plugin per ora. –

+0

sì sì. Devi solo inventare o simulare COM. Fondamentalmente si invia una richiesta Ajax al server per aprire una DLL e memorizzare il puntatore del modulo in una stringa globale sulla mappa ID modulo. Quindi è possibile inviare l'id stringa del modulo sul server e il nome della funzione. Il server può caricare la funzione del modulo e memorizzarla in una stringa per funzionare con la mappa del puntatore.Successivamente, è possibile inviare richieste al server per chiamare la funzione tramite la sua stringa di identificazione del server. Sebbene sia necessario il proprio schema di varianti per supportare l'utilizzo degli argomenti. – Dmitry

3

qualcosa come questo dovrebbe funzionare:

var obj = new ActiveXObject("ABCDll.testMethod"); 
var vResult = obj.TestMethod(); 
alert(vResult); 

:: :: aggiornamento risposta

assegno hazerd da questo link.

+1

L'ho già provato. Funziona solo in IE. –

+0

verifica la risposta aggiornata. – Nirmal

+0

Caro @Nirmal È applicabile per chrome? Penso che ActiveXObject sia consentito solo in IE. –

Problemi correlati