通过浏览器超链接调用本地 exe 程序的方法

这种情况类似于平时上网时,点击了一个链接,然后自动打开了我们本地的 QQ 程序。
参考一下QQ的方式:
tencent://Message/?Uin=000000&websiteName=qzone.qq.com&Menu=yes
这里介绍 url protocol 的实现方式,优点是兼容各种浏览器。
实现步骤如下:

1、先注册URL PROTOCOL, 在windows 下就是注册表:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\myprotocol]
@="myprotocol Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\myprotocol\DefaultIcon]
@="C:\\WINDOWS\\NOTEPAD.EXE,1"

[HKEY_CLASSES_ROOT\myprotocol\shell]

[HKEY_CLASSES_ROOT\myprotocol\shell\open]

[HKEY_CLASSES_ROOT\myprotocol\shell\open\command]
@="\"C:\\WINDOWS\\NOTEPAD.EXE\" \"%1\""

保存内容为 reg文件,然后执行,就加入注册表,注册了这个名字为myprotocol 的协议.

2、写测试页面

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html xmlns="http://www.w3.org/1999/xhtml">
  <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  </head>
    <body>
        <div>
            <a href="myprotocol://123">
            执行可执行文件
            </a>
        </div>
    </body>
</html>

运行页面,点击链接,就能直接打开 notepad 。因为这里用的是写字板测试的,你可以在注册表中,改成其他任何你要的程序。

3、参数传递
(1)写注册表的时候,最后路径要加上参数,如:

[HKEY_CLASSES_ROOT\myprotocol\shell\open\command]
@="\"C:\\WINDOWS\\NOTEPAD.EXE\" \"%1\""

(2)程序的主入口加入参数,以C#为例:

static void Main(string[] args)
{
    if (args.Length > 0)
    {
        MessageBox.Show(args[0].ToString());
    }            
}

(3)在写链接的时候自定义参数,程序会把整个链接都获取到,自己在进行解析 :

比如:

<a href="myprotocol://123">

会获取到

"myprotocol://123"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值