在网上获得了如下资料:
<html> <head></head> <body ms_positioning="GridLayout"> <form id="Form1" method="post" runat="server"> 请输入要运行的程序: <br /> <input name="exe" type="text" size="20" value="regedit" /> <button class="button" onclick="Run(exe.value)">确定</button> <button class="button" onclick="exe.value="";">重新输入</button> <br /> <button class="button" onclick="Run('notepad')">记事本</button> <br /> <button class="button" onclick="Run('mspaint')">画图板</button> <br /> <button class="button" onclick="Run('calc')">计算器</button> <br /> <button class="button" onclick="Run('cmd')">cmd</button> <br /> <button class="button" onclick="Run('Regedit')">Regedit</button> <br /> <button class="button" onclick="Run('Msconfig')">Msconfig</button> <br /> <button class="button" onclick="Run('file:///d:\hello.exe)">WINAMP</button> <br /> <button class="button" onclick="Run('IEXPLORE.EXE')">IE</button> <br /> <button class="button" onclick="Run('..')">..</button> <br /> <button class="button" onclick="Run('%windir%')">%windir%</button> <br /> <button class="button" onclick="Run('%temp%')">%temp%</button> <br /> <button class="button" onclick="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> </html>
该段代码打开如:word,excel,notepad,画板等都能打开,
但是自已写的应用程序为什么打不开呢?报错说:
系统找不到指定的路径。
想要IE或word点击超链接打开本地的EXE应用程序,这个怎么办?
比如点击这样的链接
<a href="vip:123-MonacoGP-19279-Senna">打开我的协议</a>
将打开我的EXE应用程序?
首先你要修改注册表,要让IE看的懂像href="vip:123-MonacoGP-19279-Senna" 这样的协议.
//写注册表 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()); }