1. 程式人生 > >網頁Web上呼叫本地應用程式

網頁Web上呼叫本地應用程式

一、web呼叫本地應用程式的思路

這個方法主要思路是利用自定義URL Protocol來呼叫應用程式。瀏覽器在解析到自定義URL Protocol之後,會尋找登錄檔,然後通過登錄檔啟動相應的程式,然後啟動改程式,傳入引數。就好像是在瀏覽器可以開啟迅雷類似。

1、先往登錄檔寫資訊。如下:

  1. Windows Registry Editor Version 5.00  
  2. [HKEY_CLASSES_ROOT\Diff]  
  3. "URL Protocol"="這裡是小程式的安裝路徑"  
  4. @="DiffProtocol"  
  5. [HKEY_CLASSES_ROOT\Diff\DefaultIcon]  
  6. @="這裡是小程式的安裝路徑,1"  
  7. [HKEY_CLASSES_ROOT\Diff\shell]  
  8. [HKEY_CLASSES_ROOT\Diff\shell\open]  
  9. [HKEY_CLASSES_ROOT\Diff\shell\open\command]  
  10. @="\"這裡是小程式的安裝路徑\" \"%1\""  

將上面的內容儲存為.reg檔案執行即可。

2web頁面呼叫。在網頁直接一個超連結,協議://引數就可以了。比如

  1. <ahref=" Diff://">
  2.    alt="點選這裡">
  3.  </a>

  1. <ahref=" Diff://hello"
    >SIMU</a>

需要指出的是:在上面例子中登錄檔中程式碼【@="\"這裡是小程式的安裝路徑\" \"%1\""】中的%1表示傳入引數,就是對應這此處的Diff://hello,解析之後就可以得到引數hello了。

二、完整例項。

1xxxClient.reg檔案

  1. Windows RegistryEditor Version 5.00  
  2. [HKEY_CLASSES_ROOT\xxxClient]  
  3. @="xxxClientProtocol"  
  4. "URLProtocol"=""  
  5. [HKEY_CLASSES_ROOT\xxxClient\DefaultIcon]  
  6. @="C:\\ xxx_Client\\client.bat,1"  
  7. [HKEY_CLASSES_ROOT\xxxClient\shell]  
  8. [HKEY_CLASSES_ROOT\xxxClient\shell\open]  
  9. [HKEY_CLASSES_ROOT\xxxClient\shell\open\command]  
  10. @="\"C:\\xxx_Client\\client.bat\" \"%1\""  

2client.bat檔案

  1. @echo off  
  2. rem設定當前目錄為C:\ xxx _Client\  
  3. setcurrent_dir=C:\ xxx _Client\   
  4. pushd%current_dir%   
  5. call C:\ xxx _Client\xxx _Client.exe  

3web頁面檔案

  1. <!DOCTYPEHTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <htmlxmlnshtmlxmlns="http://www.w3.org/1999/xhtml">
  3.  <head>
  4.      <metahttp-equiv="Content-Type"content="text/html; charset=utf-8" />
  5.  </head>
  6.    <body>
  7.        <div>
  8.            <ahref="xxxClient://">
  9.           開啟客戶端軟體  
  10.            </a>
  11.        </div>
  12.    </body>
  13. </html>

三、注意問題:

1、如何動態生成登錄檔資訊,可以在應用程式中寫程式碼操作登錄檔,寫入上面的URL Protocol登錄檔格式資訊。

2、路徑問題,如果應用程式包含了很多檔案,就涉及到工作路徑問題,web呼叫應用程式,當時的工作路徑是的web執行的工作路徑。可以通過bat或應用程式來切換路徑。

bat為例,建立一個批處理檔案,裡面切換路徑,註冊登錄檔資訊時,[HKEY_CLASSES_ROOT\Diff\shell\open\command]使用bat路徑。

xxxClient.bat檔案

@echo off

rem設定當前目錄為C:\ xxx_Client\

setcurrent_dir=C:\ xxx_Client\

pushd%current_dir%

call C:\ xxx_Client\xxx_Client.exe

3、如何獲取引數?

MFC Dialog程式的引數值:

首先需要獲取傳入的引數,在控制檯程式中我們都知道main()函式的引數argv裡帶入了傳入的引數,而在MFC程式中則需要在InitInstance()中進行命令列引數解析。

    CCommandLineInfo   cmdInfo;   
    ParseCommandLine(cmdInfo);

為了給對話方塊傳入待顯示的引數,加入了一個SetDisplayInfo方法。

    CHelloWorldDlg dlg;
    dlg.SetDisplayInfo(cmdInfo.m_strFileName);
//
設定待顯示的資訊

void CHelloWorldDlg::SetDisplayInfo(CString& strInfo)
{
    
this
->m_strInfo = strInfo;
}

最後在OnInitDialog函式中進行引數解析

//解析傳入的完整地址,e.g "helloworld://hello world/"
int pos = m_strInfo.Find("//");//
找到分隔符
    m_strInfo = m_strInfo.Mid(pos+2);//取到傳入的引數    m_strInfo.Delete(m_strInfo.GetLength()-1);//去掉最後的'/'
    m_edit_info.SetWindowText(m_strInfo);


本人經過嘗試,將所有需要的檔案整理如下,可供下載

資源下載 http://download.csdn.net/download/qiuchunhuige/10112809

相關推薦

網頁Web呼叫本地應用程式

一、web呼叫本地應用程式的思路 這個方法主要思路是利用自定義URL Protocol來呼叫應用程式。瀏覽器在解析到自定義URL Protocol之後,會尋找登錄檔,然後通過登錄檔啟動相應的程式,然後啟動改程式,傳入引數。就好像是在瀏覽器可以開啟迅雷類似。 1

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

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

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

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

利用URL Protocol實現網頁呼叫本地應用程式

由於做專案需要實現如題的一個功能,所以搜尋了相關資料。 下面轉載CSDN的一篇文章和百度文庫的一篇文章,標記有待後期詳細學習。 自定義URL Protocol 協議 一些應用軟體可以在瀏覽器中點選一個url後自動啟動,並執行操作。這是咋實現的呢? 我在 goog

迅雷,電驢通過利用URL Protocol實現網頁呼叫本地應用程式

由於做專案需要實現如題的一個功能,所以搜尋了相關資料。 下面轉載CSDN的一篇文章和百度文庫的一篇文章,標記有待後期詳細學習。 自定義URL Protocol 協議 一些應用軟體可以在瀏覽器中點選一個url後自動啟動,並執行操作。這是咋實現的呢? 我在 goog

URL Protocol實現網頁呼叫本地應用程式

自定義URL Protocol 協議 一些應用軟體可以在瀏覽器中點選一個url後自動啟動,並執行操作。這是咋實現的呢? 我在 google了許多也找個部落格說明。接照這些文件我也新手試了一下。 通過網站呼叫可執行程式,主要是修改登錄檔,註冊 URL Protocol

最新HTML網頁教你呼叫本地Python程式

首先宣告,在HTML中呼叫本地Python程式是十分不推薦的,一是因為網頁呼叫本地程式的許可權正在被取消,二是因為真不如JS寫直接,三是隻能在自己本地呼叫。 但如果你要用,像我一樣,需要在課堂上進行一個Python程式碼的展示,並且想要一個好看的UI介面的話,可以這樣來做,

js呼叫本地應用程式

這兩天公司由於web下載大型的檔案(超2G的MP4檔案)的時候,下載到2G左右瀏覽器就會自動斷開連線,後來沒辦法就準備些一個下載工具!從瀏覽器中啟動下載工具,並傳遞下載引數給下載工具,在工具中下載並管理資源,廢話就這麼多,轉入正題。 在網上翻閱各種資料,總

通過瀏覽器超連結呼叫本地應用程式

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

WEB頁面呼叫外部應用程式

原文:http://blog.csdn.net/zhu_xun/article/details/19539513 上原始碼:    Runtime.getRuntime().exec(portScannSysPath);                //呼叫外部程式 可

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

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

PHP 網頁呼叫本地exe程式例項

一、需求:在做網站的時候,有些網站網頁面需要呼叫本地的exe程式。 二、方法:利用註冊URL Protocol的方式。 程式碼如下: 1、檢視檔案裡面的程式碼: <a href="fyexe://123456">FY辦公</a> 2、reg檔案裡面

html網頁呼叫本地exe程式的實現方法

最近在做一個專案,要什麼網頁裡調exe。。。開始以為不能實現,後來想想很多就跟淘寶網頁上點旺旺一樣,還有QQ,迅雷等都是這種。搜了一下解決方法,是添加註冊表,自己運行了可以使用。 首先開啟登錄檔,方法win+r 進入執行,或者從開始裡找執行輸入regedit進入登錄檔。 然

【問題記錄】— web頁面呼叫本地程式

起因:  最近由於專案需要在web頁面中呼叫本地部署的exe程式;進而對該功能實現做了對應瞭解;以及存在的問題進行記錄。  要實現該功能就不得不說瀏覽器自定義協議;解決辦法:那麼它是什麼呢? 瀏覽器自定義協議:   瀏覽器自定義協議,其實是微軟提供 Asynchronous Pluggable Protoco

如何在阿里雲部署 Django 應用程式

關於 Django Django 是一個用 Python 語言寫的開源 Web 框架,可幫助開發人員在構想形成後僅數小時內啟動 Web 應用程式。它遵循模型檢視模板 (MVT) 來構建應用程式,這可降低 Web 開發的複雜性,同時可讓開發人員集中精力編寫應用程式。它為網站地圖、內容管理、使用者鑑權

如何安裝和使用Wine,以便在Linux執行Windows應用程式

如何安裝和使用Wine,以便在Linux上執行Windows應用程式  我來答 分享 舉報 瀏覽 2150 次 1個回答 #不想上班# 今天上班,你最想說點啥? 最佳答案 cincoutvc 來自電腦網路類芝麻團 2017-10-19 在Linux上執行Windows程式需要安裝Wine,

[轉載] 使用 Java Web Start 部署 SWT 應用程式

SWT 概述現在把標準視窗小部件工具箱(SWT)引入開發社群是最恰當不過了。雖然到目前為止,Sun 的 Java 基礎類(Java Foundation Classes,JFC)一直能讓客戶機端應用程式的開發人員感到滿意,但仍然有許多開發人員出於各種原因不願使用 SWT。對於

基於Leaflet 的Web地圖客戶端應用程式開發框架

MarsGIS for Leaflet地圖框架 是火星科技研發的一個Web地圖開發平臺系統,是火星科技團隊成員多年GIS開發和Leaflet使用的技術沉澱。基於Leaflet和現代Web技術棧全新構建, 集成了領先的開源地相簿、視覺化庫,提供了全新的大資料視覺化、實時流資料視

Alibaba Cloud Toolkit 本地應用程式一鍵部署到線下自有 VM,或阿里雲 ECS、EDAS、Kubernetes 中

Alibaba Cloud Toolkit Alibaba Cloud Toolkit( 阿里雲開發者外掛,簡稱:Cloud Toolkit )是一個面向 IntelliJ IDEA、Eclipse 和 Maven 平臺的免費外掛,旨在幫助開發者在本地開發平臺(IDE)中更便捷的

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

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