1. 程式人生 > >通過自定義URL協議在Web網頁中啟動本地應用程式

通過自定義URL協議在Web網頁中啟動本地應用程式

    在做web應用的時候,我們經常會遇到在web中呼叫本地應用程式的問題,例如在web中點選一個按鈕,然後開啟自己寫的或者別人的應用程式。上網比較留意的同學應該會發現,想qq客服,淘寶的阿里旺旺客服都會有這樣的效果。

    下面我主要介紹一種現在主流的處理方法,這種方法在網上的其他地方也有,但是都是轉來轉去,而且寫得不詳細,對於初學者來說,很難看懂,並仿照著處理。所以這篇文章不算原創,只能說是對網上的文章進行詳細說明,便於大家使用和仿照。

這個方法主要思路是利用自定義URL Protocol來呼叫應用程式。瀏覽器在解析到自定義URL Protocol之後,會尋找登錄檔,然後通過登錄檔啟動相應的程式,然後啟動改程式,傳入引數。對於我這個專案而言,主要思路是利用這個自定義URL Protocol的方法,開啟一個c#的應用程式,在這個程式中再呼叫系統命令,開啟jar應用程式,並傳入引數。主要實現步驟如下:

1.新增自定義URL Protocol

#####################################################################################

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\""

#####################################################################################

        在#內的為自定義URL Protocol的登錄檔資訊,我對每一行說明一下:第一行是登錄檔工具的版本資訊,可以自己改一改,或者自己匯入任意一個註冊資訊,把這一行復制過來就行了;第二行中的Simu就是在HKEY_CLASSES_ROOT下面新增一個Simu樹,其中Simu的名稱就對應著自定義URL Protocol的名稱,在web中呼叫的時候需要這個名稱;第三行中的"x:\\simu\\Simulink.exe"是指定應用程式的路徑,注意只能是exe的程式;第四行是協議的名稱,可以是任意字串,後面不會用到;第五行表示在Simu中再加一個分支,照抄,不用管;第六行中的x:\\simu\\Simulink.exe也是對應的程式路徑,後面的1照抄;第七行同第五行;第八行同第五行;第九行同第五行;第十行也是將路徑換成自己的程式路徑即可,其中%1表示到引數,引數可以在你的程式simulink.exe中解析得到。分析畢。

       將#之間的內容複製到一個txt文件中,修改後綴名為.reg,雙擊該檔案即可直接匯入到登錄檔中。

呼叫協議很簡單,就是一個連結即可,如下所示:

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

    需要指出的是:在標題1中的第10行登錄檔中程式碼中的%1表示傳入引數,就是對應這此處的Simu://hello,解析之後就可以得到引數hello了。 

相關推薦

通過定義URL協議Web網頁啟動本地應用程式

    在做web應用的時候,我們經常會遇到在web中呼叫本地應用程式的問題,例如在web中點選一個按鈕,然後開啟自己寫的或者別人的應用程式。上網比較留意的同學應該會發現,想qq客服,淘寶的阿里旺旺客服都會有這樣的效果。     下面我主要介紹一種現在主流的處理方法,這種方

定義協議從瀏覽器啟動本地應用程式

1. 需要啟動的本地應用程式為:     e:\SRC\Test\MyApp\bin\Debug\MyApp.exe 2. 編輯登錄檔匯入檔案: MyApp_Disk_D.reg     內容如下: Windows Registry Editor Version 5.00

註冊定義URL協議

用過電驢的朋友都知道電驢有這麼一個功能,在網頁上點選電驢資源的連結,如果你的機器上安裝了電驢,那麼電驢就會自動啟動,然後下載所選的資源。這些日子做專案的時候Boss剛好提了這麼個需求,經一位同事指點,研究了一下,原來是醬子實現的。 首先檢視一下電驢資源的連結,可以看到全部是已

定義Metrics:讓Prometheus監控你的應用程式

前言 Prometheus社群提供了大量的官方以及第三方Exporters,可以滿足Prometheus的採納者快速實現對關鍵業務,以及基礎設施的監控需求。如上所示,一個簡單的應用以及環境架構。一般而言,我們通常會從幾個層面進行監控指標的採集: 入口閘道器:這裡可以是Nginx/HaProxy這一類

PC網頁js呼叫本地應用程式

最近要現實一個在PC網頁中實現點選按鈕呼叫本地應用程式的功能 其實實現原理也非常簡單, 首先註冊一個本地登錄檔檔案,指向本地應用程式路徑 其次在網頁中用js指向這個登錄檔檔案,就可以實現網頁呼叫本地應用程式  Windows Registry Editor Version 5.00

網頁上開啟本地應用程式——Windows下 URI Scheme的使用

一、問題描述: 最近做的專案要求從網頁端啟動本地的應用程式(windows系統下),同時會給應用程式傳遞某些引數,所以接觸到了URL Protocol這個東西。 二、所處條件: 1、本地的應用程式是unity3D開發的軟體。 2、目標平臺是windows PC端。 3、使用

scrapy通過定義類給爬取的url去重

之前我們是通過在parse函式裡設定集合來解決url去重的問題。 首先先在根目錄中建立一個新的duplication的py檔案,在from scrapy.dupefilter import RFPDupeFilter,在RFPDupeFilter原始碼中把BaseDupeFilter類複製到新建

通過定義指令在Angular2使用Echarts (實用)

原文出處:https://blog.csdn.net/idomyway/article/details/79658099 前言     echarts是第三方js庫,不是ts編寫,沒有型別定義,我們可以引入型別定義的庫@types,查詢是否有echarts,很高興其他人已

spring專案 通過定義applicationContext工具類獲取到applicationContext上下文物件

spring專案在伺服器啟動的時候 spring容器中就已經被建立好了各種物件,在我們需要使用的時候可以進行呼叫. 工具類程式碼如下 import org.springframework.beans.BeansException; import org.springframewo

如何通過定義域名方式訪問本地WEB應用

win 進入 文檔 程序 2.4 註冊 可執行 .exe 公網 自定義域名訪問本地WEB應用 本地安裝了WEB服務端,怎樣通過自定義域名方式實現從公網訪問本地WEB應用? 本文將介紹具體的實現步驟。 1. 準備工作 1.1 安裝並啟動WEB服務端 默認安裝的WEB端口是80

ssm框架通過定義異常實現對事務的管理

什麼時候回滾事務? 在spring的事務管理中我們首先要明白這個問題,一般是在丟擲執行期異常的時候會進行事務的回滾。而spring的宣告式事務管理只接受執行期異常。 異常通常分為執行期異常和編譯期異常。 在java中常見的執行期異常有: NullPointerExcept

SpringMvc通過定義註解在方法的引數注入資料

說一個場景,有時候我們做後臺業務的時候,經常需要取session中儲存的使用者資訊,所以免不了一直需要寫下面這一段又長又無聊的程式碼: MemberCommand memberCommand = (MemberCommand) request.getSes

定義瀏覽器協議,實現web程式呼叫本地程式

參考了一下qq的方式。 tencent://Message/?Uin=000000&websiteName=qzone.qq.com&Menu=yes 在登錄檔裡面新增下面,就能實現 Windows Registry Editor Version 5.00

通過定義指令在Angular2使用Echarts

前言     echarts是第三方js庫,不是ts編寫,沒有型別定義,我們可以引入型別定義的庫@types,查詢是否有echarts,很高興其他人已經幫忙實現了。我們只要匯入就行。     在網上查詢呼叫ng2呼叫echarts的方法,比較多的是ngx-e

Chapter 6 定義資料協議【第十三講】 通過大端序列方法將4個位元組int轉成 byte陣列

第一種方法: 通過大端序列方法將4個位元組int轉成 byte陣列大端序列方法:int2bytes:將int 從高到低位分別儲存到 byte[0] ~ byte[3]    byte[] bytes = new byte[4];     for (int i = 0; i &

通過定義URL Scheme啟動你的App

iPhone SDK可以把你的App和一個自定義的URL Scheme繫結。該URL Scheme可用來從瀏覽器或別的App啟動你的App。 如何響應從別的App裡發給你的URL Scheme申請,由你決定:可以喚醒你的App;也可以傳一些資訊給你。 給自己的App註冊一

通過私有協議在Chrome瀏覽器網頁開啟本地程式

    最近甲方有這樣一個需求:兩套系統,一套基於Chrome開發,一套基於IE開發,想要在Chrome中增加一個連結,然後進入IE開發的系統。也就是說,想要在Chrome中建立連結跳轉到IE瀏覽器指定頁面,還要實現跳轉動畫效果。這個需求我們先來解決從Chrome跳轉到IE

定義URL Protocol呼叫Winfrom程式(exe)並實現傳值——類似網頁連結呼叫QQ、旺旺

       近日專案(B/S)中Webform需要呼叫Winform程式,並傳遞身份等資訊。C#中提供了一個函式System.Diagnostics.Process可以直接呼叫本機exe程式並實現傳值。用法如下: Process.Start(@"D:\程式名.exe",

android:如何通過定義工程模板讓新建的工程都默認支持lambda表達式

wan tro idt ref height 代碼 spa span oid 首先參考這篇文章:自定義Android Studio工程模板,了解如何自定義模板然後結合我們上一篇文章 android: 在android studio中使用retrolambda的步驟的要點,修

玩轉angularJs——通過定義ng-model,不僅僅只是input可以有雙向綁定

spa ase write blur when mob ron lin for angularJs雙向綁定特性在開發中很方便很實用,但是由於ng-model一般只能掛在input上,因此我們需要自定義ng-model來在div等元素上使用該標簽。 自定義指令: 1