整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          html(網(wǎng)頁(yè))運(yùn)行本地程序(exe文件)的方法與源碼

          信大家在使用一些軟件的時(shí)候會(huì)發(fā)現(xiàn),只要點(diǎn)擊了它們的一些網(wǎng)頁(yè)廣告就會(huì)運(yùn)行一些推廣軟件或者是官方軟件。它們是怎么實(shí)現(xiàn)的呢?其實(shí)方法很簡(jiǎn)單,聽來(lái)群網(wǎng)慢慢道來(lái)。

          下面鏈接是微軟MSDN上的說(shuō)明,為了大家易懂,所以在這里分享給大家:http://msdn.microsoft.com/en-us/library/aa767914%28v=vs.85%29.aspx

          當(dāng)然,或許還有更復(fù)雜的方法,小編只舉一個(gè)簡(jiǎn)單的例子。

          此方法分兩部份:1. 注冊(cè)表代碼部份; 2. HTML代碼部份

          1.注冊(cè)表代碼:

          Windows Registry Editor Version 5.00
          [HKEY_CLASSES_ROOT\laiqun]
          @="laiqun Protocol"
          "URL Protocol"=""
          [HKEY_CLASSES_ROOT\laiqun\DefaultIcon]
          @="C:\\WINDOWS\\NOTEPAD.EXE"
          [HKEY_CLASSES_ROOT\>laiqun\shell]
          @=""
          [HKEY_CLASSES_ROOT\laiqun\shell\open]
          @=""
          [HKEY_CLASSES_ROOT\laiqun\shell\open\command]
          @="\"C:\\WINDOWS\\NOTEPAD.EXE\" "
          

          注釋:laiqun代表鏈接前綴如:[laiqun://], 可修改為您想要的前綴。

          C:\WINDOWS\NOTEPAD.EXE\ 代表需要執(zhí)行EXE的路徑(可執(zhí)行文件),可替換您想運(yùn)行的程序。

          修改完后保存,將TXT文件重命名為【文件名.Reg】然后運(yùn)行就加入注冊(cè)表中(如下圖)

          注冊(cè)表代碼

          2.html代碼:

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          </head>
          <body>
          <div>
          <a href="laiqun://">此處文字按需修改</a>
          </a>
          </div>
          </body>
          </html>
          

          把上面的html代碼復(fù)制到notepad++,修改完成后點(diǎn)擊保存,然后把TXT后綴修改成html即可(如下圖)。

          HTML代碼

          打開html文件點(diǎn)擊里面的鏈接就能直接打開筆記本,我里面路徑寫的是記事本程序的路徑,所以點(diǎn)擊的時(shí)候是打開記事本,這個(gè)文件路徑可以在注冊(cè)表程序中修改。

          注意:編輯代碼建議使用 notepad++等專業(yè)文本編輯器,不建議使用電腦自帶的記事本。

          好了,關(guān)于 html(網(wǎng)頁(yè))運(yùn)行本地程序(exe文件)的方法與源碼 的教程就到這里,謝謝大家支持。

          如果大家有什么不明白的地方,可以在下方評(píng)論、留言。

          在做web應(yīng)用的時(shí)候,我們經(jīng)常會(huì)遇到在web中調(diào)用本地應(yīng)用程序的問(wèn)題,例如在web中點(diǎn)擊一個(gè)按鈕,然后打開自己寫的或者別人的應(yīng)用程序。上網(wǎng)比較留意的同學(xué)應(yīng)該會(huì)發(fā)現(xiàn),想qq客服,淘寶的阿里旺旺客服都會(huì)有這樣的效果。

          其中qq的聊天按鈕已經(jīng)開源,你也可以寫到自己的網(wǎng)頁(yè)中,詳見(jiàn)http://wp.qq.com/index.html。

          下面我主要介紹一種現(xiàn)在主流的處理方法,這種方法在網(wǎng)上的其他地方也有,但是都是轉(zhuǎn)來(lái)轉(zhuǎn)去,而且寫得不詳細(xì),對(duì)于初學(xué)者來(lái)說(shuō),很難看懂,并仿照著處理。所以這篇文章不算原創(chuàng),只能說(shuō)是對(duì)網(wǎng)上的文章進(jìn)行詳細(xì)說(shuō)明,便于大家使用和仿照。

          自己在做《電能計(jì)量仿真實(shí)訓(xùn)系統(tǒng)》中,需要在B/S系統(tǒng)中調(diào)用C/S仿真系統(tǒng),并傳入幾個(gè)參數(shù),嘗試著用js調(diào)用activeObject來(lái)處理,但是這個(gè)涉及到安全性的問(wèn)題,而且只能在ie下才能實(shí)現(xiàn)。

          備注:這個(gè)項(xiàng)目是用Java完成的,包括c/s部分也是用Java swing做的,所以我遇到的問(wèn)題是在web上調(diào)用java打包之后jar應(yīng)用程序,難度比web調(diào)用exe多了一步工作。

          這個(gè)方法主要思路是利用自定義URL Protocol來(lái)調(diào)用應(yīng)用程序。瀏覽器在解析到自定義URL Protocol之后,會(huì)尋找注冊(cè)表,然后通過(guò)注冊(cè)表啟動(dòng)相應(yīng)的程序,然后啟動(dòng)改程序,傳入?yún)?shù)。對(duì)于我這個(gè)項(xiàng)目而言,主要思路是利用這個(gè)自定義URL Protocol的方法,打開一個(gè)c#的應(yīng)用程序,在這個(gè)程序中再調(diào)用系統(tǒng)命令,打開jar應(yīng)用程序,并傳入?yún)?shù)。主要實(shí)現(xiàn)步驟如下:

          1.添加自定義URL Protocol

          [plain] view plain copy

          1. Windows Registry Editor Version 5.00
          2. [HKEY_CLASSES_ROOT\Simu]
          3. "URL Protocol"="x:\simu\Simulink.exe"
          4. @="SimuProtocol"
          5. [HKEY_CLASSES_ROOT\Simu\DefaultIcon]
          6. @="x:\simu\Simulink.exe,1"
          7. [HKEY_CLASSES_ROOT\Simu\shell]
          8. [HKEY_CLASSES_ROOT\Simu\shell\open]
          9. [HKEY_CLASSES_ROOT\Simu\shell\open\command]
          10. @="\"x:\simu\Simulink.exe\" \"%1\""

          在#內(nèi)的為自定義URL Protocol的注冊(cè)表信息,我對(duì)每一行說(shuō)明一下:第一行是注冊(cè)表工具的版本信息,可以自己改一改,或者自己導(dǎo)入任意一個(gè)注冊(cè)信息,把這一行復(fù)制過(guò)來(lái)就行了;第二行中的Simu就是在HKEY_CLASSES_ROOT下面添加一個(gè)Simu樹,其中Simu的名稱就對(duì)應(yīng)著自定義URL Protocol的名稱,在web中調(diào)用的時(shí)候需要這個(gè)名稱;第三行中的"x:\simu\Simulink.exe"是指定應(yīng)用程序的路徑,注意只能是exe的程序;第四行是協(xié)議的名稱,可以是任意字符串,后面不會(huì)用到;第五行表示在Simu中再加一個(gè)分支,照抄,不用管;第六行中的x:\simu\Simulink.exe也是對(duì)應(yīng)的程序路徑,后面的1照抄;第七行同第五行;第八行同第五行;第九行同第五行;第十行也是將路徑換成自己的程序路徑即可,其中%1表示到參數(shù),參數(shù)可以在你的程序simulink.exe中解析得到。分析畢。

          將#之間的內(nèi)容復(fù)制到一個(gè)txt文檔中,修改后綴名為.reg,雙擊該文件即可直接導(dǎo)入到注冊(cè)表中。如下圖:

          2.編寫C#程序(simulink.exe)調(diào)用Jar應(yīng)用程序

          simulink.exe程序就是上述注冊(cè)表中指定的程序,即web上點(diǎn)擊按鈕之后,啟動(dòng)的程序。

          考慮到程序配置的簡(jiǎn)易和后期維護(hù)的方便,將jar程序的路徑放到環(huán)境變量中,key對(duì)應(yīng)為EMES_Simu,value對(duì)應(yīng)為simulink.jar程序的絕對(duì)路徑。

          由此可得,對(duì)于simulink.exe的主要任務(wù)就是:

          main(string[] args) {

          /**程序流程如下:

          *第一步:分析windows系統(tǒng)中的環(huán)境變量,得到環(huán)境變量為EMES_Simu的值(這個(gè)值是windows系統(tǒng)中Simulink.jar文件的絕對(duì)路徑)。設(shè)為String pathValue;

          *第二步:構(gòu)造調(diào)用simulink.jar文件的系統(tǒng)命令。大致結(jié)構(gòu)是:String cmdString,=“java -jar”+ pathValue + args[0] + " " + args[1] + " " args[2] + " " args[3] + " " args[4] + " " args[5];

          *第三步:調(diào)用系統(tǒng)命令cmdString,執(zhí)行Java應(yīng)用程序,本程序主界面隱藏或者退出(只要不影響java應(yīng)用程序的運(yùn)行即可,并且java程序退出之后c#程序必須要退出)

          **/

          }

          大家可能會(huì)思考這些功能用C語(yǔ)言即可完成,何必用c#的gui程序,這是因?yàn)閏語(yǔ)言的控制臺(tái)程序運(yùn)行系統(tǒng)命令之后,控制臺(tái)的黑屏?xí)恢北A簦词鼓阆氡M辦法讓它最小化,隱藏或者退出,在啟動(dòng)的時(shí)候也會(huì)有一個(gè)黑屏一閃而過(guò),極不美觀,使用c#的gui程序,讓程序的界面一直隱藏而不顯示,就不會(huì)有這種一閃而過(guò)的感覺(jué)了。(當(dāng)然你也可以用其他的語(yǔ)言或者其他方法處理了,這一點(diǎn)不限制)

          3.在web中調(diào)用自定義協(xié)議啟動(dòng)程序

          調(diào)用協(xié)議很簡(jiǎn)單,就是一個(gè)鏈接即可,如下所示:

          <a href="Simu://hello">SIMU</a>

          需要指出的是:在標(biāo)題1中的第10行注冊(cè)表中代碼中的%1表示傳入?yún)?shù),就是對(duì)應(yīng)這此處的Simu://hello,解析之后就可以得到參數(shù)hello了。

          效果如下圖所示:

          (1)web頁(yè)面

          (2)點(diǎn)擊之后

          (3)點(diǎn)擊啟動(dòng)程序

          圖中可以看到后面的黑屏就是c程序調(diào)用系統(tǒng)命令的界面,登陸界面就是自己的java swing程序。調(diào)用成功!

          4.還存在的問(wèn)題

          (1)路徑問(wèn)題

          利用這種方法,還存在一個(gè)問(wèn)題,這個(gè)問(wèn)題在標(biāo)題3(3)中的圖片就可以看到,在后面的黑屏中有報(bào)錯(cuò),這是因?yàn)槁窂絾?wèn)題造成的。在程序中,引用資源等都習(xí)慣使用相對(duì)路徑,在web中調(diào)用c#程序之后,c#中的相對(duì)路徑就是瀏覽器所在的路徑,在c#中調(diào)用系統(tǒng)命令之后,在java程序中的相對(duì)路徑就是c#程序的路徑了!

          對(duì)于這個(gè)問(wèn)題的解決方法:(a)使用絕對(duì)路徑,所謂絕對(duì)路徑簡(jiǎn)單的說(shuō)就是帶盤符的路徑。(b)解析路徑,在生成的相對(duì)路徑中解析出程序真正需要的路徑。

          askBuilder 是基于Electron開發(fā)的,源代碼就是html+js+css,都在 TaskBuilder.exe程序所在目錄的resources/app子目錄內(nèi),下載安裝包解壓后就能看到。

          特性:

          相對(duì)于現(xiàn)在市面上很多類似OA系統(tǒng)的、以表單和流程為核心的低代碼開發(fā)平臺(tái),TaskBuilder 能實(shí)現(xiàn)更復(fù)雜的業(yè)務(wù)應(yīng)用,簡(jiǎn)單的功能通過(guò)向?qū)б徊揭徊讲僮骷纯蓪?shí)現(xiàn),復(fù)雜的功能可以通過(guò)編寫腳本實(shí)

          現(xiàn)。


          主站蜘蛛池模板: 午夜无码视频一区二区三区| 精品国产一区二区三区香蕉| 日韩免费一区二区三区在线| 无码av不卡一区二区三区| 精品亚洲A∨无码一区二区三区| 国产成人久久精品麻豆一区| 无码日韩精品一区二区免费| 久久高清一区二区三区| 中文字幕在线视频一区| 精品视频一区二区观看| 日韩美女视频一区| 无码少妇一区二区三区芒果| 在线观看一区二区三区av| 亚洲国产日韩在线一区| 色婷婷综合久久久久中文一区二区| 亚洲国产精品一区二区第一页免| 国内精品一区二区三区最新| 无码少妇一区二区浪潮免费| 欧亚精品一区三区免费| 久久中文字幕无码一区二区 | 日韩视频一区二区在线观看 | 日韩亚洲AV无码一区二区不卡| 国产一区二区四区在线观看| 国产福利电影一区二区三区久久老子无码午夜伦不 | 日韩一区二区在线免费观看| 国产怡春院无码一区二区| 手机福利视频一区二区| 精品国产一区二区三区久久影院| 日韩在线一区二区三区视频| 国产AV天堂无码一区二区三区| 日韩电影在线观看第一区| 精品福利一区二区三区| 国产内射在线激情一区| 日韩精品一区二区三区中文| 亚洲色精品VR一区区三区| 国产精品一区二区电影| 波多野结衣的AV一区二区三区| 久久精品一区二区三区日韩 | 国产一区二区三区手机在线观看| www一区二区三区| 亚洲乱码一区二区三区在线观看|