2012-07-17 106 views
5

Quiero llamar a un método de dll desde javascript.Llamar a los métodos DLL desde Javascript

he seguido este artículo Creating activex objects with c#

Desde ActiveX funciona en IE sólo una, ¿cómo debería ser capaz de llamar a los métodos de Javascript en Firefox o Chrome?

yo ya estoy teniendo una aplicación que utiliza el objeto ActiveX para llamar a métodos de DLL, pero funciona sólo en IE.

¿Hay alguna forma de que mi navegador de aplicaciones sea independiente?

ACTUALIZADO

Solía ​​Jquery asíncrono AJAX y servicio web para llamar a métodos 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() devuelve una cadena que está alertando como { "d": "True"} donde "True" es la cadena devuelta por CallMe.

¿Cómo puedo obtener solo una cadena devuelta de ella?

Además, si método CallMe() de web devuelve un objeto de una clase presente en esa DLL? ¿Cómo puedo recuperar ese objeto en JavaScript? y ¿Podré llamar a métodos de esa clase utilizando ese objeto devuelto?

Por favor ayuda.

+0

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

Respuesta

2

No se puede ejecutar un método DLL en el navegador (esto se hace por razones de seguridad).
Para ejecutar algún código compilado en el navegador, deberá usar un plugin

ActiveX es solo un método para implementar el complemento del navegador en IE. Todos los demás navegadores usan diferentes interfaces de complementos.
Luego, si el usuario va a instalar su complemento en el navegador, este complemento estará disponible en JS y puede usarlo para ejecutar alguna función en dll.

+0

gracias VitaliyG. Actualmente estoy usando esta opción de complemento por ahora. –

+0

sí, puedes. Solo tienes que inventar o simular COM. Básicamente, usted envía una solicitud de ajax al servidor para abrir un dll y almacenar su puntero de módulo en una cadena global al mapa Id del módulo. Luego puede enviar la identificación de cadena del módulo en el servidor y el nombre de la función. El servidor puede cargar la función del módulo y almacenarla en una cadena para que funcione el mapa del puntero.Después de esto, puede enviar solicitudes al servidor para llamar a la función por su cadena de identificación del servidor. Aunque necesitará su propio esquema de variantes para admitir el uso de argumentos. – Dmitry

3

algo como esto debería funcionar:

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

:: :: actualización respuesta

cheque de hazerd de esta link.

+1

Ya lo intenté. Funciona solo en IE. –

+0

compruebe la respuesta actualizada. – Nirmal

+0

Estimado @Nirmal ¿Es aplicable para cromo? Creo que ActiveXObject solo está permitido en IE. –

Cuestiones relacionadas