如何通过js调用工控机(Windows)虚拟键盘

1. 需求背景

在工控机触摸屏中,通过浏览器web端进行表单输入,当聚焦表单输入框并不会出现虚拟键盘进行输入。

解决方式:

  1. 使用第三方npm虚拟键盘插件引入使用
  2. 使用js调用系统自带的虚拟键盘
  3. 使用快捷键Win+Ctrl+O打开关闭

本文介绍下第二种方式进行操作。

2. 实现方式

在网页中通过js调用Windows上本地的exe程序,通过修改 Windows 注册表来使用 window.open 打开键盘,实际上是在设置一个自定义的 URL 协议(如 "keyboardProtocol")与键盘应用程序(通常是系统自带的屏幕键盘)相关联。当用户在网页中点击一个链接或使用 JavaScript 打开一个 "keyboardProtocol" URL 时,这将触发屏幕键盘的打开。

  1. 找出虚拟键盘的可执行文件路径,如:C:\Windows\system32\osk.exe
  2. 编写注册文件reg文件
js 复制代码
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\keyboard] // 定义自定义 URL 协议的关键部分
@="keyboardProtocol"  // 自定义的 URL 协议名称
"URL Protocol"="keyboardProtocol" // 确保了系统知道这是一个自定义协议

[HKEY_CLASSES_ROOT\keyboard\DefaultIcon] // 定义了当用户在资源管理器或文件浏览器中双击与 "keyboardProtocol" 相关联的文件时显示的图标
@="C:\\windows\\system32\\osk.exe" // 屏幕键盘应用程序的路径

[HKEY_CLASSES_ROOT\keyboard\shell]  // 定义了如何与该协议交互

[HKEY_CLASSES_ROOT\keyboard\shell\open] // 定义了当用户右键点击与 "keyboardProtocol" 相关联的文件或文件夹并选择"打开"时发生的行为

[HKEY_CLASSES_ROOT\keyboard\shell\open\command] // 定义了如何执行与 "open" 操作相关联的操作
@="\"C:\\windows\\system32\\osk.exe\""
  1. 双击执行
  2. js中调用
js 复制代码
// 方法一
 window.location.href="keyboard://";
//or
window.open("keyboard://");

</script>
<!-- 方法二-->
<a href="keyboard://">打开应用程序</a>

3. 总结

该方法依赖于Windows系统自带的虚拟键盘,不适用于其他操作系统。

提供了一种通过JavaScript调用Windows系统自带的虚拟键盘的方法,解决在工控机触摸屏的web浏览器中进行表单输入时调用虚拟键盘的问题。

相关推荐
审小匠OpenCPAi13 分钟前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比
java·前端·人工智能·python·审计
Revolution6117 分钟前
一个公共表格组件,是怎么一步步失控的
前端·前端工程化
腻害兔33 分钟前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:CRM 客户关系模块深度解析——从线索到回款,一套完整的 B2B 销售闭环是怎么搭的?
java·前端·javascript·vue.js·产品经理·ai编程
whyfail40 分钟前
前端学 Spring Boot(2):一次点击,如何穿过整个后端?
前端·spring boot·后端
AI多Agent协作实战派1 小时前
AI多Agent协作系统实战(二十三):Agent读HEARTBEAT.md不读AGENTS.md——openclaw的文件加载之谜
前端·数据库·人工智能·uni-app
2601_955760072 小时前
如何用 Claude Opus 5 API 批量扩展长尾关键词和文章选题
前端·python·搜索引擎
KaMeidebaby2 小时前
卡梅德生物技术快报|bli亲和力检测gst:告别批量跑胶:BLI实时酶切监测技术加速GST融合蛋白下游流程优化
前端·网络·数据库·人工智能·算法
触底反弹3 小时前
🚀 删了数据刷新又回来?3 组件 × 4 回调 × 3 坑讲透 React 父子通信
前端·javascript·react.js
耳东小鹿4 小时前
对象常用方法
前端
程序员海军4 小时前
一个 AI 应用开发程序员的一天,都在屏幕前忙些什么?
前端·后端·程序员