利用Register protocol實現網頁呼叫桌面程式(類似迅雷、QQ等)
前言
我們經常看到 tencent://.. thunder:// 這兩種開頭的網址,往往覺得很奇怪,很想弄懂其中的原理,是如何實現的,我查詢了相關的 資料,終於找到了,跟大家分享下。
原理篇
微軟官方說明:http://msdn.microsoft.com/en-us/library/Aa767914.aspx
tencent://.. thunder:// 是 騰訊 和 迅雷 的協議,即頁面上或位址列裡的連結只要輸入帶有 tencent://… 的協議,就會自動呼叫一個已寫好的程式執行該協議的操作。 或者是開啟頁面,迅雷的是下載資源的連結 。通過微軟的說明,知道這是Register protocol,對於 Windows、Linux 和 OS X 作業系統都可以註冊這樣的協議。
比如說 Windows,其實只需寫入登錄檔,即可實現協議與執行程式的關聯。
例如騰訊的協議登錄檔如下:
[HKEY_CLASSES_ROOT\TENCENT]
@=”TencentProtocol”
“URL Protocol”=”D:\\Program Files\\Tencent\\QQ\\Timwp.exe”
[HKEY_CLASSES_ROOT\TENCENT\DefaultIcon]
@=”D:\\Program Files\\Tencent\\QQ\\Timwp.exe,1″
[HKEY_CLASSES_ROOT\TENCENT\shell]
[HKEY_CLASSES_ROOT\TENCENT\shell\open]
[HKEY_CLASSES_ROOT\TENCENT\shell\open\command]
@=”\”D:\\Program Files\\Tencent\\QQ\\Timwp.exe\” \”%1\”"
所實現的就是當瀏覽器(或其它)碰到 tencent://… 時,自動呼叫 Timwp.exe,並把 tencent://… 地址作為第一個引數傳遞給 Timwp.exe。
實現篇
下面我們自己來實現這樣的需求:
要實現如上功能,最主要的還是對登錄檔的處理。新建一個登錄檔檔案Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT/FinstoneRpt]
@="FRptProtocol"
"URL Protocol"="I://Release//CZBYReport.exe"
[HKEY_CLASSES_ROOT/FinstoneRpt/DefaultIcon]
@="I://Release//CZBYReport.exe,0"
[HKEY_CLASSES_ROOT/FinstoneRpt/shell]
[HKEY_CLASSES_ROOT/FinstoneRpt/shell/open]
[HKEY_CLASSES_ROOT/FinstoneRpt/shell/open/command]
@="/"I://Release//CZBYReport.exe/" /"%1/""
以上定義了協議名:FinstoneRpt,及相關呼叫處理程式的位置。各位可自行調整。
將上述內容匯入到登錄檔中,然後在相關網頁里加上一個連線:
<a href="FinstoneRpt://message/?id=3e5065a6-19a0-41e6-afab-db7cc4bd3c76">test</a>
當點選時,則會呼叫登錄檔中記錄的程式。當然該程式可以接受引數:就是href裡的所有內容。可根據情況自行判斷處理。
如需通過VS的安裝程式實現安裝時自動執行以上操作。在安裝程式裡,匯入上述登錄檔檔案,因為使用者安裝時的路徑不一樣,要定位登錄檔中記錄的程式,只需在VS裡將相關注冊鍵值修改:
將涉及具體地址都一一改成[TARGETDIR]程式名,即可。
相關文章
- 實現類似QQ的即時通訊程式(十一)
- 實現類似IE的列印網頁功能 (轉)網頁
- QT實現類似於網頁step 選單效果QT網頁
- 用 hyperf websocket 實現,類似 qq 單機登入功能Web
- goldendate呼叫sql實現類似表聯合查詢GoSQL
- 直播系統中網頁類似app頁面切換動畫的實現方式網頁APP動畫
- 【html】網頁呼叫本地exe程式的實現方法HTML網頁
- android 實現類似qq未讀訊息點選迴圈顯示Android
- python呼叫瀏覽器,實現刷網頁小程式Python瀏覽器網頁
- 網頁,網站點選qq圖示,加qq,開啟對方qq的網頁程式碼網頁網站
- 類似dreamweaver在VSCode實現網頁製作的靜態CMS:Front MatterVSCode網頁
- 討論一下基於網頁聊天的實現(類似gmail中的聊天)網頁AI
- 完美實現類似QQ的自拍頭像、上傳頭像功能!(Demo 原始碼)原始碼
- C#實現類似QQ的隱藏浮動窗體、訊息閃動C#
- Flutter 實現類似美團外賣店鋪頁面滑動效果Flutter
- Android實現類似QQ對話方塊的@他人的整體解決方案Android
- 類似QQ對話方塊上下部分可拖動程式碼
- PostgreSQL類似OracleMERGE功能的實現SQLOracle
- 類似咻一咻,水波紋實現
- SQLite中中實現 if not exist 類似功能SQLite
- VB6初步實現在WINXP下類似WIN7顯示桌面的功能Win7
- 開啟網頁 自動提示選擇qq實現方式整理網頁
- 簡單實現類似Spring的Aop原理實現Spring
- 使用.net standard實現不同內網埠的互通(類似花生殼)內網
- 原生JS實現類似《掘金》網站的圖片檢視器JS網站
- Flutter 實現類似TabPicker省市區選擇Flutter
- flutter實現類似優惠券樣式Flutter
- 在鴻蒙中實現類似瀑布流效果鴻蒙
- 網站防止被舉報程式碼舉 QQ 上的網頁報入口隱藏 QQ 上的網頁網站網頁
- 用Java 19實現類似Go併發 - mccueJavaGo
- MySQL的字首索引及Oracle的類似實現MySql索引Oracle
- go如何實現類似java的動態代理GoJava
- JS實現 類似圖片3D效果JS3D
- IM即時通訊專案講解(一) 實現類似qq微信表情皮膚無縫切換
- 如何在 web 頁面中實現類似 excel 固定表頭 / 標題行的效果?WebExcel
- 類似微信首頁彈性滾動和慣性滾動效果的實現——OverScroll
- C# SQLiteHelper類似SqlHelper類實現存取Sqlite資料庫C#SQLite資料庫
- 用 C++ 實現類似於 JAVA HttpServlet 的程式設計介面C++JavaHTTPServlet程式設計