通过浏览器打开某个应用程序

现在做了一个小程序,想要用户可以通过浏览器打开,最早见过通过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,直接双击运行,即可导入注册表。

html测试页面

Open MyApp

这个时候双击,就可以打开自己的exe程序了。

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到新东西,总会小开心一下。

你可能感兴趣的:(注册表,浏览器打开应用程序)