从网页上打开本地应用程序——Windows下 URI Scheme的使用
来源:互联网 发布:淘宝店铺级别提升 编辑:程序博客网 时间:2024/05/22 14:27
一、问题描述:
最近做的项目要求从网页端启动本地的应用程序(windows系统下),同时会给应用程序传递某些参数,所以接触到了URL Protocol这个东西。
二、所处条件:
1、本地的应用程序是unity3D开发的软件。
2、目标平台是windows PC端。
3、使用AdvancedInstaller制作软件安装包。
二、主要问题的解决过程:
1、编写注册表处理文件,即*.reg文件,所有代码如下:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Simu] "URL Protocol"="X:\\xx.exe" @="SimuProtocol" [HKEY_CLASSES_ROOT\Simu\DefaultIcon] @="X:\\xx.exe,1" [HKEY_CLASSES_ROOT\Simu\shell] [HKEY_CLASSES_ROOT\Simu\shell\open] [HKEY_CLASSES_ROOT\Simu\shell\open\command] @="\"x:\\xx.exe\" \"%1\""
注意上面每一行原则上缺一不可,但实际上有些是可以省略的。不过最好都写上,否则有可能会出问题。
2、在AdvancedInstaller中导入此reg文件,并将上面的路径有关的字符串改成advancedInstaller中的“变量”
3、build安装包进行安装。
4、在目标机器上安装该软件。
5、测试URL Protocol是否成功写入注册表:在txt中写入"<a href="Simu://canshu">点击打开目标程序</a>"并保存成html文件,用浏览器打开此网页,点击链接,若出现提示请求打开本地程序,则代表成功。
6、写接受参数的代码。C#中从System.Environment.commandLine这个字符串中来获取传过来的参数。这个字符串的格式是"X:\...\XX.exe Simu://canshu",用正则表达式截取即可。如果使用控制台程序接受参数,可以从main函数的参数argus[0]里获取上面的字符串。
三、遇到的其他问题及处理办法:
1、参考资料1中也有提及,参数如果是中文,某些浏览器会对其进行URL编码,而某些则不会,所以最好统一先将参数进行一些编码,且最好不是URL编码,因为在获取参数的时候可能又会把URL编码出来的字符串再次转换成其他编码,会乱码。
2、主要是AdvancedInstaller的使用问题,比如把程序安装进入C盘时会出现权限问题等,有时间再总结一下。
四、主要参考资料:
1、微软官方文档
2、fkepgydhbyuan的专栏
五、其他说明
1、iPhone SDK中似乎也有对这种URI Scheme的支持,详见通过自定义的URL Scheme启动你的App
2、在Chrome、edge、360浏览器上测试有效
- 从网页上打开本地应用程序——Windows下 URI Scheme的使用
- windows 在网页上启动本地应用程序
- 网页打开本地应用程序
- 从网页Web上调用本地应用程序(.jar、.exe)的主流处理方法
- 从网页Web上调用本地应用程序(.jar、.exe)的主流处理方法
- 从网页Web上调用本地应用程序(.jar、.exe)的主流处理方法
- 从网页Web上调用本地应用程序(.jar、.exe)的主流处理方法
- java打开网页URI
- Android在网页下(WebView中运用HTML)点击按钮打开本地手机应用程序
- 什么是data URI scheme及如何使用data URI scheme
- 网页Web上调用本地应用程序
- 网页Web上调用本地应用程序
- Data URI scheme - 数据的uri模式
- android Scheme使用 打开指定的Activity
- C# windows服务打开网页或者应用程序
- wine----Ubuntu下打开exe等windows下的应用程序
- Android 通过网页打开自己的APP(scheme)
- Android 通过网页打开自己的APP(scheme)
- 排序-冒泡排序
- 将指定文字写入QImage中并保存成图片
- Python学习笔记-----Scrapy
- 冒泡排序
- HDOJ(HDU).2191. 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活 (DP 多重背包+二进制优化)
- 从网页上打开本地应用程序——Windows下 URI Scheme的使用
- 机器学习算法集锦:从贝叶斯到深度学习及各自优缺点
- poj 1002 487-3279
- 文章标题
- Mongo简介
- 蓝桥—交换瓶子
- [LeetCode]Number Complement - Python
- 文章标题
- POJ 3431 Texture Tile 可能会