如何通過js來打開客戶端的應用程序

在網上獲得瞭如下資料:
  <body MS_POSITIONING="GridLayout">

    <form id="Form1" method="post" runat="server">
請輸入要運行的程序:<br/><input name=exe type=text size=20 value="regedit"><BUTTON class=button οnclick="Run(exe.value)">確定</BUTTON><BUTTON class=button οnclick=exe.value="";>重新輸入</BUTTON><br/> 
<BUTTON class=button οnclick="Run('notepad')">記事本</BUTTON><br/> 
<BUTTON class=button οnclick="Run('mspaint')">畫圖板</BUTTON><br/> 
<BUTTON class=button οnclick="Run('calc')">計算器</BUTTON><br/> 
<BUTTON class=button οnclick="Run('cmd')">cmd</BUTTON><br/> 
<BUTTON class=button οnclick="Run('Regedit')">Regedit</BUTTON><br/> 
<BUTTON class=button οnclick="Run('Msconfig')">Msconfig</BUTTON><br/> 
<BUTTON class=button οnclick="Run('file:///d:\hello.exe)">WINAMP</BUTTON><br/> 
<BUTTON class=button οnclick="Run('IEXPLORE.EXE')">IE</BUTTON><br/> 
<BUTTON class=button οnclick="Run('..')">..</BUTTON><br/> 
<BUTTON class=button οnclick="Run('%windir%')">%windir%</BUTTON><br/> 
<BUTTON class=button οnclick="Run('%temp%')">%temp%</BUTTON><br/> 
<BUTTON class=button οnclick="Run('file:///D:/Program%20Files/Tencent/qq.EXE')">WINAMP</BUTTON><br/>
     </form>
<SCRIPT language=JavaScript> 
function Run(command) 

window.oldOnError = window.onerror;
                window._command = command;
                window.onerror = function (err) 
                {
if (err.indexOf('utomation') != -1) 
{
alert('命令' + window._command + ' 已經被用戶禁止!'); 
return true;
}
else 
return false;
}
                var wsh = new ActiveXObject('WScript.Shell');
                 if (wsh)
wsh.Run(command);
                window.onerror = window.oldOnError;
}

</SCRIPT> 
  </body>

該段代碼打開如:word,excel,notepad,畫板等都能打開,
但是自已寫的應用程序爲什麼打不開呢?報錯說:
系統找不到指定的路徑。





想要IE或word點擊超鏈接打開本地的EXE應用程序,這個怎麼辦?

比如點擊這樣的鏈接

<a href="vip:123-MonacoGP-19279-Senna">打開我的協議</a>

將打開我的EXE應用程序?

首先你要修改註冊表,要讓IE看的懂像href="vip:123-MonacoGP-19279-Senna" 這樣的協議.

c#如何寫註冊表?

//寫註冊表
RegistryKey key = Registry.ClassesRoot.CreateSubKey("vip");
key.SetValue("", "URL:vip Protocol");
key.SetValue("URL Protocol","");
RegistryKey Subkey= key.CreateSubKey("DefaultICon");
Subkey.SetValue("", "exe文件路徑");
Subkey = key.CreateSubKey("shell").CreateSubKey("open").CreateSubKey("Command");
Subkey.SetValue("","exe文件路徑");

這段代碼是在 註冊表 HKEY_CLASSES_ROOT 下新建vip 的鍵

結構是這樣的

HKEY_CLASSES_ROOT
vip
  (Default) = "URL:vip Protocol"
  URL Protocol= ""
  DefaultIcon
   (Default) = "c:\somepath\APPTest.exe"
  shell
   open
    command
     (Default) = "c:\somepath\APPTest.exe" "%1"

創建完以後當你點擊這樣(vip:123-MonacoGP-19279-Senna)的鏈接,就可以打開外部的自己定義的應用程序了.

當然winform 應用程序還可以接收你傳過來的值

比如 EXE應用程序啓動的時候接收鏈接傳過來的 123-MonacoGP-19279-Senna字符串,你可以在winform 啓動的時候捕獲這個值

[STAThread]
static void Main(string[] args)
{
if (args.Length > 0)
{
//arg[0]就是剛剛鏈接傳過來的
// 賦值=arg[0];
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}

如何給IE工具欄添加圖標和按鈕,菜單,打開自己的應用程序?
可以看看這篇
http://www.codeproject.com/useritems/CorKatIEExtension.asp

關於快速的操作註冊表
你可以參考
http://www.codeproject.com/cs/system/quickregistry1.asp

本文來源http://www.codeproject.com/aspnet/APPHyperlinks.asp

//

上面所有鏈接文章的源代碼下載地址

http://www.blogjava.net/Files/wujun/APPTest.rar

//END


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章