现在做了一个小程序,想要用户可以通过浏览器打开,最早见过通过ActiveX插件实现的,但是这个东西早已淘汰,而且安全性问题,即便IE浏览器支持,但是也不好使。
然后,发现人家QQ、腾讯会议这些的都可以直接浏览器打开,而且不限浏览器。
百度了下,确实可以。
于是赶紧搞起来,做个Test。
说起来道理很简单,注册表做好配置,浏览器就可以直接触发了。
- Windows Registry Editor Version 5.00
-
- [HKEY_CLASSES_ROOT\MyAppProtocol]
- @="MyAppProtocol Protocol"
- "URL Protocol"=""
-
- [HKEY_CLASSES_ROOT\MyAppProtocol\shell]
-
- [HKEY_CLASSES_ROOT\MyAppProtocol\shell\open]
-
- [HKEY_CLASSES_ROOT\MyAppProtocol\shell\open\command]
- @="D:\\Desktop\\Code\\MyApp\\bin\\Debug\\MyApp.exe %1"
txt文件另存为reg,直接双击运行,即可导入注册表。
<a onclick="window.open('MyAppProtocol://a=2,b=2')">Open MyAppa>
这个时候双击,就可以打开自己的exe程序了。
- static class Program
- {
- ///
- /// 应用程序的主入口点。
- ///
- [STAThread]
- static void Main()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
-
- //如果需要可以应用程序接收到url传参,注册表项在应用程序路径后增加 %1
- //设置其他参数也是不行的,必须是%1,且前面有个空格
- string[] xx = Environment.GetCommandLineArgs();
- string ss = string.Join("@", xx);
-
- //有个参数以后,就可以根据参数控制应用程序逻辑了
-
- Form1 form = new Form1();
- //传参给需要的页面
- form.Params = ss;
-
- Application.Run(form);
- }
- }
然后呢,我又想到人家腾讯会议,通过链接可以直接进入会议室,即可以传参。
参考我的html测试页面,气已经加上参数了,但是一开始不管用。
又找了几个案例,虽然没明说咋搞,但是看了下发现上面注册表配置略有不同。
重点来了:在应用程序路径后多了个 %1,就可以,注意前面有个空格
我试着把这个改为其他值,发现也不行,估计是固定的吧,标识可以接收参数。
Over,get到新东西,总会小开心一下。