夸克之书

  • 首页
  • 科普
  • 笔记
  • C#
  • 物联网
  • 算法
  • Linux
  • 树莓派
夸克之内,别有洞天
  1. 首页
  2. C#
  3. 正文

利用URL Protocol实现网页调用本地应用程序

2019-05-20 1863点热度 0人点赞 0条评论

用网页调用本地应用程序的思路是,先进行注册表注册自定义一个URL Protocol协议,再利用URL Protocol实现网页调用本地应用程序。

既然写在C#的版块里面,那咋怎么滴也得用C#来实现一下。知道原理是在注册表中注册一个自定义的URL Protocol协议之后就简单了,使用C#来操作注册表即可。

注册核心代码:

key = Registry.ClassesRoot.CreateSubKey(protocolName);
key.SetValue("", "Url:" + protocolName + " Protocol", RegistryValueKind.String);
key.SetValue("URL Protocol", path, RegistryValueKind.String);

key.CreateSubKey("DefaultIcon").SetValue("", path + ",1");

shell = key.CreateSubKey("shell");
open = shell.CreateSubKey("open");
command = open.CreateSubKey("command");
cmd = """ + path + """;
if (useParam)
    cmd += " "%1"";
command.SetValue("", cmd);

protocolName表示协议名称,path表示exe文件位置,必须为绝对路径。

接下来就来测试一下:

1、编写一个Winform的程序作为被调用app。

重点在于在main方法中接收传入的参数。如下图所示:

利用URL Protocol实现网页调用本地应用程序插图

2、注册一个custumapp。

利用URL Protocol实现网页调用本地应用程序插图1

3、在网页中测试

网页代码很简单,一行即可。

<a href="custumapp://url?name=geeiot">点我测试</a>

4、测试结果

利用URL Protocol实现网页调用本地应用程序插图2

5、Demo下载

UrlProtocolRegister下载

特别说明,项目中UrlProtocolRegister代码来源于 https://github.com/Hawkeyes0/UrlProtocolRegister ,并稍加改动。主要是懒,有轮子了就不想写了。

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2020-12-13

afirefish

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

管理员

这个人很懒,什么都没留下

搜索文章
分类
  • C# (29)
  • Linux (3)
  • 树莓派 (13)
  • 物联网 (19)
  • 科普 (4)
  • 笔记 (30)
  • 默认 (46)
最新 热点 随机
最新 热点 随机
C#几种深拷贝方法探究及性能比较 获取访问IP信息接口(暂不开放) Vieu主题作者疑似跑路?这人品?!!! 树莓派PWM风扇控制 PVE重启后LVM Thin数据丢失,错误:Volume group "****" has insufficient free space (128 extents): 4048 required. OpenWrt配置SmartDNS OpenWrt x86安装Frpc Intel网卡开机显示Initializing Intel(R) Boot Agent GE v1.5.50
树莓派PWM风扇控制Error response from daemon: cannot stop container: ******: Cannot kill container *******:.....单机Docker搭建FastDFSC# Json序列化时将长整型(long)属性序列化为Json字符串使用淘宝npm以及安装cnpm免费本地解析域名(locallocal.cn),支持HTTPSIdentityServer4证书创建Intel网卡开机显示Initializing Intel(R) Boot Agent GE v1.5.50
OpenWrt x86安装Frpc PostgreSQL重置所有表Sequence IIS应用程序池两种运行模式:集成模式和经典模式。 JQuery中arrt()和prop()的区别 Chrome显示完整URL和HTTP协议 树莓派.Net Core Iot入门系列篇(1):点亮一个LED灯 将对象转化为Get请求字符串 树莓派安装.NET 5.0
最近评论
发布于 3 周前(03月21日) function getCpuTemp() 函数结束之前使用close关闭 文件流 不关闭的话长...
发布于 3 周前(03月19日) 闹了半天找到问题了 原来是gpio版本问题 pi@raspberrypi:~/Desktop $ ...
发布于 3 周前(03月19日) sudo下执行 无法控制小风扇 普通用户却可以 这是可能是什么原因 :redface:
发布于 2 个月前(02月21日) 好的谢谢,那我只能通过kill杀死推流指令进程来实现了。
发布于 2 个月前(02月21日) 要用这个项目的话,你得自己拉代码来改了。做这玩意儿主要是考虑全天候的,没考虑过关[笑哭]
书签
  • 打赏
  • 毒鸡汤(有点意思)
  • 米店
  • 金鱼直播间
放松一下
https://www.quarkbook.com/wp-content/uploads/2020/09/Yanni-Nightingale.flac
用户您好!请先登录!
登录 注册

COPYRIGHT © 2020 夸克之书. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

蜀ICP备15036129号-9

登录
注册|忘记密码?