天天看點

js通過NPAPI調用本地應用程式并傳參

最近,忙于尋找解決方案,許久沒有更新blog,第一次寫與web端互動的windows桌面應用,可謂是焦頭爛額,遇到的問題一大把一大把(此時的想法是世界上要是隻有IE這一個浏覽器,那該是多麼的清淨,本文僅記錄本人的開發中遇到的問題,供其他人學習參考。并不能保證适用所有的情況):

Q1:web頁面如何判斷目前windows是否已經安裝

Q2:web頁面怎麼給用戶端傳參

由于最後決定是通過npapi插件 調用本地應用程式,是以問題有更複雜了一些:

1、 web如何調用npapi插件并傳遞參數。

F:

直接上代碼

<embed type="application/npapitestdemoone-plugin" id="pluginId">

<script>
    var embed = document.getElementById('pluginId');


    function TestFun() 
    {
        var rev = ;
        var param = "node app.js -p55";
        var plugin = document.getElementById("pluginId");
        rev = plugin.TestFun(param);
      //  alert(rev);
    }
</script>
           

其中的param就是需要傳遞的參數

document.getElementById(“pluginId”)執行個體化控件後直接調用控件的方法就行了,是不是很簡單;

2、npapi插件接收到參數後,如何将參數傳遞給應用程式

F:

JS與控件之間的傳參是通過控制台來完成的,是以在TestFun()方法内直接通過args[0]來擷取頁面傳遞過來的參數

在控件的TestFun()方法接受到參數後 通過CreateProcess(nPath,strBuf,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi) ;方法傳遞給應用程式,nPath為應用程式路徑,strBuf就是需要傳遞的參數

關于CreateProcess的其他參數的使用請參考:http://blog.csdn.net/xujinming0124/article/details/46800595

3、應用程式怎麼接收并使用(解析)npapi插件傳過來的參數

CreateProcess方法調用應用程式時傳遞的參數也是通過控制台傳遞的。

未完待續。。。。。

繼續閱讀