利用URL protocol在網頁打開本地exe


 

Registering the Application Handling the Custom URI Scheme

 

To register an application to handle a particular URI scheme, add a new key, along with the appropriate subkeys and values, to HKEY_CLASSES_ROOT. The root key must match the URI scheme that is being added. For instance, to add an "alert:" scheme, add an alert key to HKEY_CLASSES_ROOT, as follows:

 

 

 

HKEY_CLASSES_ROOT
   alert
      URL Protocol = ""

 

Under this new key, the URL Protocol string value indicates that this key declares a custom pluggable protocol handler. Without this key, the handler application will not launch. The value should be an empty string.

 

Keys should also be added for DefaultIcon and shell. The Default string value of the DefaultIcon key must be the file name to use as an icon for this new URI scheme. The string takes the form "path, iconindex" with a maximum length of MAX_PATH. The name of the first key under the shell key should be an action verb, such as open. Under this key, a command key or a DDEEXEC key indicate how the handler should be invoked. The values under the command and DDEEXEC keys describe how to launch the application handling the new protocol.

 

Finally, the Default string value should contain the display name of the new URI scheme. The following example shows how to register an application, alert.exe in this case, to handle the alert scheme.

 

 

 

HKEY_CLASSES_ROOT
   alert
      (Default) = "URL:Alert Protocol"
      URL Protocol = ""
      DefaultIcon
         (Default) = "alert.exe,1"
      shell
         open
            command
               (Default) = "C:\Program Files\Alert\alert.exe" "%1"

 

When a user clicks a link containing your custom URI scheme, Windows Internet Explorer launches the pluggable protocol handler registered for that URI scheme. If the specified open command specified in the registry contains a %1 parameter, Internet Explorer passes the URI to the registered pluggable protocol handler application.


 

 

  • 在注冊表里新建register key

在注冊表里新建一個key,按照URL protocol的格式,設置好路徑。

也可以寫一個.reg文件,打開文件即可注冊key了。

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\HelloRio]
"URL Protocol"="C:\\Program Files (x86)\\HelloRio\\HelloRio.exe"
@="HelloRioProtocol"
[HKEY_CLASSES_ROOT\HelloRio\DefaultIcon]
@="C:\\Program Files (x86)\\HelloRio\\HelloRio.exe,1"
[HKEY_CLASSES_ROOT\HelloRio\shell]
[HKEY_CLASSES_ROOT\HelloRio\shell\open]
[HKEY_CLASSES_ROOT\HelloRio\shell\open\command]
@="\"C:\\Program Files (x86)\\HelloRio\\HelloRio.exe\" \"%1\""

第一行表示用的注冊表工具

然后就是對應需要新建項在注冊表中的路徑,以及對應鍵值。雙擊該文件,即可自動在注冊表中注冊一個URL Protocol。

 

 寫一個test的html。或者在地址行直接鍵入。

最后就會提示luanch你的exe了。這里我寫了一個比較簡單的應用程序,實際上當我們在register key,%1代表我們接受參數。

實際上傳入的參數是HelloRio:myrio,這里需要解析字符串。本來想用正則表達式,無奈正則表達式學得不好。+。+

#include <Windows.h>
#include <iostream>
#include <cstring>
#include <regex>


using namespace std;

int main(int argc,char* argv[]){
    if(argc<2){
        MessageBox(NULL,TEXT("Please input a parameter£¡"),TEXT("HelloRio"), MB_OK);
        exit(1);
    }
    else{

        string s1=string(argv[1]);
        //search the right parameter

        auto i=find(s1.begin(),s1.end(),':');
        i++;
        string s2="hello"+string(i,s1.end());
        wstring tmp(s2.begin(),s2.end());
        const wchar_t* t=tmp.c_str();
        t+='\0';
        MessageBox(NULL,t,TEXT("HelloRio"), MB_OK);
        return 0;
    }
}

 

騰訊的key:


 

用JavaScript在HTML里打開exe,需要Active X且不被瀏覽器接受(因為安全性因素)

<html> 
<head> 
<script language="javascript"> 
function Run(strPath) 
{ 
var objShell = new ActiveXObject("wscript.shell"); 
objShell.exec(strPath); 
objShell = null; 
} 
</script> 
</head> 
<body> 
請輸入要運行的程序路徑:<br> 
<input name=exe type=text size=20 value="D:\\a.doc"> 
<BUTTON class=button onclick="Run(exe.value)">確定</BUTTON> 
</body> 
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM