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


    现在做了一个小程序,想要用户可以通过浏览器打开,最早见过通过ActiveX插件实现的,但是这个东西早已淘汰,而且安全性问题,即便IE浏览器支持,但是也不好使。

    然后,发现人家QQ、腾讯会议这些的都可以直接浏览器打开,而且不限浏览器。

    百度了下,确实可以。

    于是赶紧搞起来,做个Test。

    说起来道理很简单,注册表做好配置,浏览器就可以直接触发了。

    注册表信息

    1. Windows Registry Editor Version 5.00
    2. [HKEY_CLASSES_ROOT\MyAppProtocol]
    3. @="MyAppProtocol Protocol"
    4. "URL Protocol"=""
    5. [HKEY_CLASSES_ROOT\MyAppProtocol\shell]
    6. [HKEY_CLASSES_ROOT\MyAppProtocol\shell\open]
    7. [HKEY_CLASSES_ROOT\MyAppProtocol\shell\open\command]
    8. @="D:\\Desktop\\Code\\MyApp\\bin\\Debug\\MyApp.exe %1"

    txt文件另存为reg,直接双击运行,即可导入注册表。

    html测试页面

    <a onclick="window.open('MyAppProtocol://a=2,b=2')">Open MyAppa>

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

    exe程序代码

    1. static class Program
    2. {
    3. ///
    4. /// 应用程序的主入口点。
    5. ///
    6. [STAThread]
    7. static void Main()
    8. {
    9. Application.EnableVisualStyles();
    10. Application.SetCompatibleTextRenderingDefault(false);
    11. //如果需要可以应用程序接收到url传参,注册表项在应用程序路径后增加 %1
    12. //设置其他参数也是不行的,必须是%1,且前面有个空格
    13. string[] xx = Environment.GetCommandLineArgs();
    14. string ss = string.Join("@", xx);
    15. //有个参数以后,就可以根据参数控制应用程序逻辑了
    16. Form1 form = new Form1();
    17. //传参给需要的页面
    18. form.Params = ss;
    19. Application.Run(form);
    20. }
    21. }

    然后呢,我又想到人家腾讯会议,通过链接可以直接进入会议室,即可以传参。

    参考我的html测试页面,气已经加上参数了,但是一开始不管用。

    又找了几个案例,虽然没明说咋搞,但是看了下发现上面注册表配置略有不同。

    重点来了:在应用程序路径后多了个 %1,就可以,注意前面有个空格

    我试着把这个改为其他值,发现也不行,估计是固定的吧,标识可以接收参数。

    Over,get到新东西,总会小开心一下。

  • 相关阅读:
    ElasticSearch学习笔记之二:Filebeat日志收集
    JavaScript - 移除数组中的空字符串元素
    4.1 Redis哨兵模式
    Wireshark抓包分析TCP协议:三次握手和四次挥手
    scrm系统哪款好?快鲸scrm私域流量运营专家
    JAVA - 数据库连接池
    机器学习/深度学习模型的8个测试属性
    使用 Docker 部署 instantbox 轻量级 Linux 系统
    git |常用命令
    Windows 与linux 账户密码的破解
  • 原文地址:https://blog.csdn.net/ewqewqqwe/article/details/126657828