如何有效管理和优化你的网页插件? | 网页插件管理
747
2022-09-29
网页中打开exe
网页上打开本地的exe文件,可以吗?
西蒙说:可以的。
方法如下:
1、定义一个私有协议 协议,Registry Editor Version 5.00[HKEY_CLASSES_ROOT\HYZT]@="URL:HYZT Protocol Handler""URL Protocol"=""[HKEY_CLASSES_ROOT\HYZT\shell][HKEY_CLASSES_ROOT\HYZT\shell\open][HKEY_CLASSES_ROOT\HYZT\shell\open\command]@="E:\\hyzt\\bin\\Debug\\hyzt.exe %1"
文件另存为:hyzt.reg。然后双击此文件,注册表即修改矣。文件可以多次修改,多次运行。新修改覆盖原来。
如此,我们就定义了一个私有协议:hyzt。
学习和 URL。二者有啥区别?
URI,统一资源定位符;URL,统一资源位置符。简单来讲, URL = 协议 + URI。
比方说,baidu.com是一个URI,而 我们用 hyzt:// 就可以打开exe。如果想传参数该咋办?可以类似酱紫:
hyzt://1000,chenqu
注意,exe接收到的参数,并不是 1000,chenqu,而是完整的 hyzt://1000,chenqu !
附exe接收参数并处理:
namespace TackColor{ static class Program { ///
namespace TackColor{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } string _UserId = "0"; string _UserName = ""; public Form1(string[] paras) : this() { pickupParam(paras); } private void Form1_Load(object sender, EventArgs e) { MessageBox.Show(String.Format("用户ID:{0},用户名:{1}",this._UserId,this._UserName)); } void pickupParam(string[] paras) { if(paras == null && paras.Length == 0) { return; } string p = paras[0]; Regex rx = new Regex(@"hyzt\://(?
[^/]+)/?", RegexOptions.Compiled | RegexOptions.IgnoreCase); Match m = rx.Match(p); if(m.Success) { string[] ps = m.Result("${p}").Split(','); if(ps.Length > 0) { this._UserId = ps[0]; } if (ps.Length > 1) { this._UserName = ps[1]; } } } }}
4、私有协议与程序安装包结合 私有协议里面,明确指明了相应的可执行文件的路径:
[HKEY_CLASSES_ROOT\HYZT\shell\open\command]@="C:\\hyzt\\bin\\Debug\\hyzt.exe %1"
问题是,每台客户机实际情况千差万别,比如本例子中,有些机器根本没有C盘,可执行文件可能装在D盘。那么这个注册表文件在运行前,都要手动改一下吗? 一个思路是,这个注册表修改工作放在程序的安装包里。用户安装的时候,就将私有协议写进去。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~