当前位置: 首页 > news >正文

测试网页调用本地可执行程序(续:带参数调用)

  前篇文章介绍了网页调用本地可执行程序的方式,通过在注册表中注册命令,然后在网页中调用命令启动本地程序。如果需要传递参数,则需要在注册表命令中的command项中设置如下形式的值。

	"XXXXXX\XXXXXXX.exe" "%1"

 &emsp创建测试程序,主要功能是显示传入的参数,同时在注册表中注册名为TestPageCall命令,如下图所示:
在这里插入图片描述在这里插入图片描述
  在网页中设置调用命令,如下所示,调用示例如下所示,其中href属性中,冒号之前是在注册表中注册的名,冒号之后则是需处理的参数信息。

<a href = 'TestPageCall:-a'>启动测试程序</a>

  下图为本地程序接收的参数信息,主要是有两点:1)网页中href属性中的所有内容都传了过来;2)冒号之前的命令全变为小写(最初没注意,后续写测试程序解析命令时才发现的),为了测试是否全部变为了小写,将-a变为了-aAaB,测试发现冒号后面的大小写没有变;3)参数中如果有中文,则传到本地可执行程序中时会重新编码,如将空格变为20%,测试时,将参数变为-aA你好aB,程序接收到的参数内容如下第三张图所示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  上述结果表明,如果网页调用本地可执行程序时,网页调用命令中附加的参数会和命令共同作为一个整体参数传入本地可执行程序,也即在program的Main函数中仅会收到一个参数,如果需要通过网页传递多个值,则需将多个值按约定的格式拼在一起,在本地可执行程序中再重新解析。
  注册表的HKEY_CLASSES_ROOT下有些命令会增加额外的固定命令,此时固定命令是设置在command项的值中,如下所示的acrobat的命令,传入本地可执行程序中的效果如下图所示,如果需要更多的固定参数,在command项中加入到字符串中即可。

在这里插入图片描述在这里插入图片描述
  最后以调用本地程序显示环境检测数据为例演示调用效果,在注册表中创建TestViewECData,接收的参数中包括两个数字,前一个为分页显示数据条数,后一个为显示第几页内容,中间用逗号分隔。网页中的调用为及在本地解析参数的代码如下所示:

	<a href = 'TestViewECData:50,2'>查看检测数据(每页50条,查看第2页)</a><br /><a href = 'TestViewECData:20,10'>查看检测数据(每页20条,查看第10页)</a>
	if(args!=null && args.Length>0){string arg0 = args[0];if(arg0.StartsWith("testviewecdata:")){string[] infos = arg0.Substring("testviewecdata:".Length).Split(',');comboLimits.Text = infos[0];                    tabControl1.SelectedTab = tabPage3;...comboJump2Pages.Text = infos[1];...}}

  程序运行效果如下图所示:
在这里插入图片描述
在这里插入图片描述

参考文献:
[1]https://blog.csdn.net/gc_2299/article/details/132701231
[2]https://learn.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa767914%28v=vs.85%29

http://www.lryc.cn/news/173794.html

相关文章:

  • Carla自动驾驶模拟器安装和使用
  • 【每日一题】1539. 第 k 个缺失的正整数
  • AI-Chat,一款集全网ai功能的应用(附下载链接)
  • 3、靶场——Pinkys-Place v3(3)
  • 什么是 AirServer?Mac专用投屏工具AirServer 7 .27 for Mac中文破解版百度网盘下载
  • MapStruct介绍以及VO、DTO、PO、DO的区别
  • 记一次hyperf框架封装swoole自定义进程
  • 多输入多输出 | MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出
  • 李宏毅机器学习笔记-transformer
  • 基于Java的酒店管理系统
  • Go语言的单元测试与基准测试详解
  • 【多态】为什么析构函数的名称统一处理为destructor?
  • 6.4 Case Studies - A Simple Logging Archive Class
  • 【深度学习实验】前馈神经网络(九):整合训练、评估、预测过程(Runner)
  • 002-第一代硬件系统架构确立及产品选型
  • Go基础语法:指针和make和new
  • 039_小驰私房菜_Camera perfermance debug
  • Caché for Windows安装及配置
  • 代码随想录算法训练营20期|第四十六天|动态规划part08|● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇!
  • 系统安装(一)CentOS 7 本地安装
  • obsidian使用指南
  • 【ardunio】青少年机器人四级实操代码(2023年9月)
  • MYSQL的存储过程
  • [kubernetes/docker] failed to resolve reference ...:latest: not found
  • 彻底解决win11系统0x80070032
  • 解决因为修改SELINUX配置文件出错导致Faild to load SELinux poilcy无法进入CentOS7系统的问题
  • flask中的跨域处理-方法二不使用第三方库
  • 矿山定位系统-矿井人员定位系统在矿山自动化安全监控过程中的应用
  • JS-ECharts-前端图表 多层级联合饼图、柱状堆叠图、柱/线组合图、趋势图、自定义中线、平均线、气泡备注点
  • 【eslint】屏蔽语言提醒