让代码更简单

当前位置:代码狗 > 开发教程 > C#开发教程 > 正文

向Windows注册私有协议以便浏览器url启动程序

重要:本文最后更新于2019-11-21 08:38:35,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

想必大家都知道浏览器可以唤起QQ客户端对话,那么它是怎么实现的呢?向Windows注册私有协议以便浏览器url启动程序一文来揭开它的神秘面纱,如果你的程序想要使用网页启动,或者想要使用URL传递参数,可以考虑使用这种办法。

大家电脑应该都装有QQ程序吧,使用浏览器访问如下地址,可以看到浏览器打开了QQ对话框。

tencent://message/?uin=88888&Menu=yes
向Windows注册私有协议以便浏览器url启动程序

向Windows注册私有协议以便浏览器url启动程序

实现过程是向Windows注册表注册动作,新建一个文本文件,写上如下代码,保存为reg后缀文件,然后双击运行向注册表写入规则。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\daimadog]
@="URL:daimadog Protocol Handler"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\daimadog\shell]

[HKEY_CLASSES_ROOT\daimadog\shell\open]

[HKEY_CLASSES_ROOT\daimadog\shell\open\command]
@="E:\\vs project\\dailogtest\\dailogtest\\dailogtest\\bin\\Debug\\dailogtest.exe \"%1\""

需要注意的是daimadog是我的命令名称,相当于tencent这个命令,E:\\vs project\\dailogtest\\dailogtest\\dailogtest\\bin\\Debug\\dailogtest.exe是url链接命令由哪个程序来执行,这里我写了一个简单的Windows桌面程序。

桌面程序使用C#,代码如下:

修改Program.cs文件

 static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (args.Length == 0)
{
Application.Run(new Form1());
}
else {
Application.Run(new Form1(args));
}
}
}

这里只是给默认生成的Main函数增加一个输入参数,args,并根据args参数是否为空,选择不同的窗口构造函数执行。

新增Form1.cs的构造函数,默认不带参数,新增一个带参数的。

//新建一个变量存放参数
string[] args = null;
//默认的无参数构造函数
public Form1()
{
InitializeComponent();
}
//新增的有参数构造函数
public Form1(string[] args)
{
InitializeComponent();
this.args = args;
}

由于这里我先试了下,命令行传参,所以使用的数组,使用浏览器的话直接使用字符串就可以了。

然后在窗体加载完毕后处理下参数,这里为了让大家看到,我直接显示在lable标签中。

private void Form1_Load(object sender, EventArgs e)
{
if (args!=null) {
String str = "";
string[] arr = args[0].Split('?');
string[] parm = arr[1].Split('&');
for (int i = 0; i < parm.Length; i++)
{
string[] parm1 = parm[i].Split('=');
str = str + parm1[0] + ":" + parm1[1] + "\r\n";
}
label1.Text = str;
}
}

代码是解析浏览器传递过来的数据,逻辑自己写下就可以了,不必照抄。

在浏览器中输入如下地址,测试下效果:

daimadog://XXX?id=123&value=test

其中XXX随便填写什么,我在C#程序中并没有验证这个。?后面就是参数了,想必大家都知道get传参。

向Windows注册私有协议以便浏览器url启动程序

向Windows注册私有协议以便浏览器url启动程序

第一次启动,浏览器会询问你是否同意使用应用处理,点击打开就可以了,效果如下。

向Windows注册私有协议以便浏览器url启动程序

向Windows注册私有协议以便浏览器url启动程序

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏

评论 抢沙发

×

请作者吃根烤肠!

支付宝