前言:
今天咱们对“js 调用本地程序”大体比较关怀,你们都需要知道一些“js 调用本地程序”的相关知识。那么小编同时在网摘上搜集了一些关于“js 调用本地程序””的相关文章,希望同学们能喜欢,姐妹们快快来了解一下吧!VueJS调用本地Delphi应用程序本质上与 js 调用本地 exe 程序的原理是相同的。通用的做法是通过在 Windows 注册表中注册自定义URL Protocol 协议,然后通过浏览器执行打开对应的协议即可。
3.1创建 Delphi 窗体应用程序
Delphi 窗体应用程序接受 1 个来自网络调用的参数,并将参数值显示在界面上。
第一步,先创建窗体应用程序,在窗体应用程序中放置一个 Label,其 Caption 属性值为“Web传入的参数”,一个 Edit 控件,其 name 属性值为 Edit1;
第二步,编写窗体的 OnCreate 事件,代码如下:
procedure TForm1.FormCreate(Sender: TObject);begin // 检查命令行参数是否为1,不为1则终止程序的执行 if Application.ParamCount <> 1 then begin ShowMessage('参数错误, 格式:democalledbyvue <参数1>'); Application.Terminate; end; // 将命令行参数值显示在窗体的 Edit1 控件中 Edit1.Text:=TIdURI.URLDecode(Application.Params[1]);end;
URL解码采用了 indy 包中的 TIdURI 类的 URLDecode 方法。
3.2编写自定义URL Protocol 协议
自定义URL Protocol 协议模板:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\<协议名称>]@="URL:<协议名称> Protocol Handler""URL Protocol"= "" [HKEY_CLASSES_ROOT\<协议名称>\DefaultIcon]@="<可执行程序>" [HKEY_CLASSES_ROOT\<协议名称>\shell]@= "" [HKEY_CLASSES_ROOT\<协议名称>\shell\open]@= "" [HKEY_CLASSES_ROOT\<协议名称>\shell\open\command]@="\"<可执行程序>\" \"%1\""
将模板文件中的 <协议名称> 和 <可执行程序> 替换为实际名称即可。注:<可执行程序> 为可执行程序文件的全路径名称,其中的路径分隔符 “\” 必须转义,写作 “\\”。
将模板文件保存为 .reg ,双击运行。
示例:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\democalledbyvue]@="URL:democalledbyvue Protocol Handler""URL Protocol"= "" [HKEY_CLASSES_ROOT\democalledbyvue\DefaultIcon]@="E:\\workspace_of_codetyphon\\democalledbyvue\\democalledbyvue.exe" [HKEY_CLASSES_ROOT\democalledbyvue\shell]@= "" [HKEY_CLASSES_ROOT\democalledbyvue\shell\open]@= "" [HKEY_CLASSES_ROOT\democalledbyvue\shell\open\command]@="\"E:\\workspace_of_codetyphon\\democalledbyvue\\democalledbyvue.exe\" \"%1\""3.3编写 VueJS 页面
在 Vue 创建的项目中的页面上添加一个链接、一个文本框、一个按钮控件,实现点击链接后调用 3.1 中创建的应用程序并传递固定的参数,在文本框中输入文本,单击按钮调用 3.1 中创建的应用程序并传递文本框中输入的内容,代码如下:
<template> <div style="padding: 24px;"> <a href="democalledbyvue://这是从Web传递的参数/11570d2c987ef23a609e" >调用本地exe</a> <div style="padding: 12px;"> <InputText type="text" v-model="param" /> </div> <Button label="调用本地exe" @click="call_local_exe"/> </div></template><script>import {ref} from "vue"import Button from 'primevue/button'import InputText from 'primevue/inputtext'export default { name: "IndexPage", components: { Button, InputText, }, setup () { const param = ref('') function call_local_exe () { window.open('democalledbyvue://' + param.value) } return { param, call_local_exe } }}</script><style scoped></style>
在 js 中关键就是通过自定义协议 democalledbyvue:// 来调用。
3.4 运行效果
Web 页面:
本地应用程序:
从执行结果我们可以看出,每次调用都会打开以一个本地应用程序的实例。
标签: #js 调用本地程序