用网页调用本地应用程序的思路是,先进行注册表注册自定义一个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方法中接收传入的参数。如下图所示:
2、注册一个custumapp。
3、在网页中测试
网页代码很简单,一行即可。
<a href="custumapp://url?name=geeiot">点我测试</a>
4、测试结果
5、Demo下载
特别说明,项目中UrlProtocolRegister代码来源于 https://github.com/Hawkeyes0/UrlProtocolRegister ,并稍加改动。主要是懒,有轮子了就不想写了。
文章评论