欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

C#注册URL协议,使用浏览器打开本地程序,类似网页上点了QQ交谈打开本地QQ客户端程序...

发布时间:2024/8/24 169 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C#注册URL协议,使用浏览器打开本地程序,类似网页上点了QQ交谈打开本地QQ客户端程序... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

本教程适用于Windows系统

从浏览器上打开本地程序,主要用到了本地URL协议,其实主要就是改注册表

先建立一个项目,我建的是控制台项目

在Program.cs写2个静态方法用来添加注册表、移除注册表(用浏览器打开程序主要就是靠这两个方法)

/// <summary>/// 注册启动项到注册表/// </summary>public static void Reg(){//注册的协议头,即在地址栏中的路径 如QQ的:tencent://xxxxx/xxx 我注册的是jun 在地址栏中输入:jun:// 就能打开本程序var surekamKey = Microsoft.Win32.Registry.ClassesRoot.CreateSubKey("jun");//以下这些参数都是固定的,不需要更改,直接复制过去 var shellKey = surekamKey.CreateSubKey("shell");var openKey = shellKey.CreateSubKey("open");var commandKey = openKey.CreateSubKey("command");surekamKey.SetValue("URL Protocol", "");//这里可执行文件取当前程序全路径,可根据需要修改var exePath = Process.GetCurrentProcess().MainModule.FileName;commandKey.SetValue("", "\"" + exePath + "\"" + " \"%1\"");} /// <summary>/// 取消注册/// </summary>public static void UnReg(){//直接删除节点Microsoft.Win32.Registry.ClassesRoot.DeleteSubKeyTree("jun");}

然后再Main方法里加入一些逻辑来调用这两个方法

static void Main(string[] args){Console.WriteLine("输入: 1注册协议 2卸载协议");if (Console.ReadLine() == "1")Reg();elseUnReg();}

然后编译,调试一下,运行程序输入1,敲回车,程序秒退,这说明已经成功了,先进入注册表看看有没有添加成功

打开注册表(运行:regedit):HKEY_CLASSES_ROOT\jun

 

可以看到注册表项已经添加成功,接下来就测试一下能否正常使用:

如果你注册的协议是jun的话,点这里就可以打开你的程序了

否则那就在浏览器地址栏中输入:协议名://  如: jun:// 敲回车即可(很多浏览器不能直接输入,要用a标签跳转,IE是可以直接输入的,建议使用IE测试)

从浏览器打开程序已经实现了,那么参数呢,如何传参,其实也蛮简单的,接下来我们在Main方法里取到参数(通过args):

将Main方法改为:

static void Main(string[] args){if (args.Length > 0){Console.WriteLine(args[0]);}Console.WriteLine("输入: 1注册协议 2卸载协议");if (Console.ReadLine() == "1")Reg();elseUnReg();}

编译后再浏览器输入:协议名://hello,world

如果你注册的协议是jun的话,点这里就可以打开你的程序了

结果如下图:

以上就是获取的参数,可以通过拆分字符串得到想到的结果

卸载我们就不测试了,方法已提供,直接删除注册表就行

源码下载

 

转载于:https://www.cnblogs.com/yzeng/p/4249907.html

总结

以上是生活随笔为你收集整理的C#注册URL协议,使用浏览器打开本地程序,类似网页上点了QQ交谈打开本地QQ客户端程序...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。