使用浏览器打开本地的exe程序并传递参数

使用浏览器打开本地的exe程序并传递参数

html文件

其中OpenProgramByBroswer: 为协议名称,名称后面要跟上英文的冒号。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Open Calculator</title>
</head>
<body>
  <button onclick="openCalculator()">Open Calculator</button>

  <script>
    function openCalculator() {
      var customProtocol = 'OpenProgramByBroswer:';
      var operation = 'add'; // 设置要执行的操作
      var operand = '10'; // 设置操作数

      // 构建带有参数的URL
      var calculatorURL = customProtocol + '//' + '?operation=' + operation + '&operand=' + operand;

      var iframe = document.createElement('iframe');
      iframe.style.display = 'none';
      iframe.src = calculatorURL;
      document.body.appendChild(iframe);

      setTimeout(function() {
        document.body.removeChild(iframe);
      }, 500);
    }
  </script>
</body>
</html>

本地的exe程序代码,使用的C#的控制台程序

using System;

namespace OpenProgramByBroswer
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("hello man");
            Console.WriteLine("open by broswer");
            if (args.Length == 0)
            {
                Console.WriteLine("没有传递参数");
            }
            else
            {
                Console.WriteLine("传递的参数有:");
                for (int i = 0; i < args.Length; i++)
                {
                    Console.WriteLine($"索引是{i}:参数的内容是:{args[i]}");
                }
            }
            Console.ReadKey();
            Console.ReadKey();
            Console.ReadKey();
        }
    }
}

两个bat命令

bat文件一:修改注册表.bat

@echo off
SET Mypath=%~dp0
SET LuPath=%Mypath:\=\\%
SET lvPath=%Mypath:\=/% 


@echo Windows Registry Editor Version 5.00 >MyApp.reg
@echo [HKEY_CLASSES_ROOT\OpenProgramByBroswer]>>MyApp.reg
@echo @="Open MyApp">>MyApp.reg
@echo "URL Protocol"="">>MyApp.reg

@echo [HKEY_CLASSES_ROOT\OpenProgramByBroswer\shell]>>MyApp.reg

@echo [HKEY_CLASSES_ROOT\OpenProgramByBroswer\shell\open]>>MyApp.reg

@echo [HKEY_CLASSES_ROOT\OpenProgramByBroswer\shell\open\command]>>MyApp.reg
@echo @="\"%LuPath%启动软件.bat\" \"%%1你1好1我1是1传1递1的1参1数\"">>MyApp.reg

regedit /s %Mypath%MyApp.reg 

exit

其中OpenProgramByBroswer 要和上面html文件中的定义的协议一致。
1你1好1我1是1传1递1的1参1数 为启动程序会传递的参数,可以将这个删掉,不传递参数

注册表文件二:启动软件.bat

OpenProgramByBroswer 为启动程序的名称

chcp 936
@echo off
SET Mypath=%~dp0
echo %1
start %Mypath%OpenProgramByBroswer %1你2好2我2的2传2递2的2参2数2

%1你2好2我2的2传2递2的2参2数2 为启动的时候传递的参数,可以删掉也可以留着。

创建自解压文件

  1. 收集exe文件, 和bat命令,将exe放到和exe同级目录下
    在这里插入图片描述2. 用win rar创建自解压程序,修改创建出来的程序的名称,并点击设置为自解压格式压缩文件
    在这里插入图片描述

  2. 切换到高级,点击自解压选项
    在这里插入图片描述

  3. 解压路径可以写成:../HelloMan 或者其他路径。
    在这里插入图片描述

  4. 切换到设置,在解压后运行中输入:修改注册表.bat
    在这里插入图片描述

  5. 创建自解压缩文件
    在这里插入图片描述

客户端在网页打开文件

  1. 客户端需要先有创建的自解压文件,然后以后管理员身份运行自解压文件。(不以管理员身份也行,但是有概率不大行,所以建议是以管理员身份运行)
    在这里插入图片描述

  2. 设置文件的路径,我这里是默认安装到了C盘的根目录,具体路径需要在在上面设置,也可以让用户自己点击浏览设置路径,路径在哪里不重要,重要的是尽量不要有中文。
    在这里插入图片描述

  3. 自解压文件运行完毕
    在这里插入图片描述

  4. 在浏览器中打开上面的html文件,直接将html文件拖拽到打开的浏览器页面

在这里插入图片描述

  1. 点击按钮即可打开本地的程序,并且看到传递的参数,
    在这里插入图片描述
  2. 参数解析
    ?operation=add&operand=10你1好1我1是1传1递1的1参1数你2好2我2的2传2递2的2参2数2
?operation=add&operand=10是网页传递的参数
你1好1我1是1传1递1的1参1数是注册表传递的参数
你2好2我2的2传2递2的2参2数2是启动程序.bat 传递的参数

程序卸载

  1. 打开注册表找到计算机\HKEY_CLASSES_ROOT\OpenProgramByBroswerOpenProgramByBroswer 删除。
    在这里插入图片描述

  2. 找到自己在运行exe时候解压的路径将文件也删除。

注意事项

  1. 修改html文件之后需要将浏览器关闭,然后再打开新的浏览器打开html文件,用于清理缓存

  2. 不能打开程序,在控制台查看到这样的错误信息,是因为浏览器中规定的协议名和修改注册表.bat 中规定的协议名称不一致,在这里插入图片描述

  3. 修改bat之后需要讲将注册表删除

Enjoy

资源链接:
https://download.csdn.net/download/GoodCooking/89077930

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值