2012-07-17 478 views
5

我想從JavaScript中調用一個dll的方法。從Javascript中調用DLL方法

我跟着這篇文章Creating activex objects with c#

由於只的ActiveX在IE中,我應該怎麼能夠調用從JavaScript在Firefox或Chrome那些方法?

我已經有一個應用程序使用ActiveX對象來調用Dll方法,但它只能在IE中工作。

是否有任何可能的方式讓我的應用程序瀏覽器獨立?

修訂

我用Jquery的異步AJAX和web服務調用的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); 

如果的CallMe()返回字符串它提醒它作爲{ 「d」: 「True」}其中「True」是從CallMe返回的字符串。

我該如何才能從中得到返回的字符串?

此外,如果的CallMe()的web服務的方法返回的一類存在於DLL對象? 如何在JavaScript中檢索該對象?和 我可以使用那個返回的對象來調用那個類的方法嗎?

請幫忙。

+0

重複? http://stackoverflow.com/questions/9430619/calling-a-dll-function-from-a-html-page-that-runs-on-chrome-and-firefox?rq=1 – rene 2012-07-17 06:51:52

回答

2

你不能只是在瀏覽器中執行一個DLL方法(這是出於安全原因)。
爲了在瀏覽器中執行一些編譯代碼,你將不得不使用一個plugin

ActiveX只是一個在IE中實現瀏覽器插件的方法。所有其他瀏覽器使用不同的插件界面。
然後,如果用戶將在瀏覽器中安裝您的插件 - 這個插件將可從JS獲得,您可以使用它來在DLL中執行一些功能。

+0

感謝VitaliyG。目前我正在使用這個插件選項。 – 2013-11-25 06:49:54

+0

是的,你可以。你只需要發明或模擬COM。基本上,你發送一個ajax請求到服務器來打開一個DLL並將其模塊指針存儲在一個全局字符串模塊ID映射。然後您可以發送服務器上模塊的字符串ID和函數名稱。服務器可以加載模塊函數,並將其存儲在一個字符串中以作爲指針映射。在此之後,您可以發送請求到服務器,通過其服務器ID字符串調用該函數。儘管您需要自己的變體方案來支持使用參數。 – Dmitry 2017-07-17 01:13:30

3

這樣的事情應該工作:

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

::更新::從這個link

檢查hazerd的答案。

+1

我已經嘗試過。它僅適用於IE。 – 2012-07-17 07:00:24

+0

檢查更新的答案。 – Nirmal 2012-07-17 07:09:12

+0

親愛的@Nirmal它適用於Chrome嗎? 我認爲ActiveXObject只允許在IE中使用。 – 2015-12-14 04:55:33