通过注册表方式启动和关闭手写输入法(方法适合各种应用)
求:window系统下,点击输入窗口时,需要自动弹出手写输入法。点击除输入窗口外位置时,需要关闭手写输入法。
实现:
一、安装手写输入法插件(我选用的是搜狗输入法)
这是个什么协议呢,从来没有见过啊,也只是一个a标签就可以调用起来。于是我们需要深入探讨下a标签的协议。
a标签协议解读
平时在做网页的a标签跳转的时候,遇到比较多的就是http或者https协议,更常用的也就是个ftp协议,那这些协议是如何来的呢?凭啥a标签就可以直接调用这些协议呢?
查阅相关资料得到如下结论:a标签的href属性值如果是以http开头的,那么浏览器会马上启动http解释器去解释
该网址,首先会在本地机器去找一个hosts文件, 如果在hosts文件上该域名没有对应的主机,那么浏览器就去到对应的dns服务器去寻找该域名对应的主机号。如果找到了对应的主机,那么该请求就会发给对应的主机。
如果a标签的href属性值没有以任何协议开头,那么浏览就会启动file协议解释器去解释该资源路径。
如果a标签的href属性值并不是以http开始,而且其他 的一些协议,那么这时候浏览器就回去到我们本地的注册表中去查找是否有处理这种协议 的应用程序,如果有,那么马上启动该应用程序处理该协议。
其中比较关键的就是第三点,其实第三点也包含了前面两点。
注册列表查看协议,打开注册列表,Win+R 输入 regedit
第一个注册节点下的列表的作用是:
HKEY_CLASSES_ROOT是应用程序运行时必需的信息
HKEY_CLASSES_ROOT控制键包括了所有文件扩展和所有和执行文件相关的文件。它同样也决定了当一个文件被双击时起反应的相关应用程序。
HKEY_CLASSES_ROOT被用作程序员在安装软件时方便的发送信息,在Win95和Winnt中,HKEY_CLASSES_ROOT和HKEY_LOCAL_MACHINE\Software\Classes是相同的。程序员在运行他们的启动程序时不需要担忧实际的位置,相反的,他们只需要在HKEY_CLASSES_ROOT中加入数据就可以了。
https://blog.51cto.com/u_10879170/4968702
二、创建一个添加注册表文件:hinput.reg。手写注册协议,然后编辑如下内容
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Handinput]
@="URL:Handinput Protocol Handler"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\Handinput\DefaultIcon]
@="C:\\Program Files (x86)\\SogouInput\\Components\\HandInput\\1.1.0.2082\\handinput.exe"
[HKEY_CLASSES_ROOT\Handinput\shell]
[HKEY_CLASSES_ROOT\Handinput\shell\open]
[HKEY_CLASSES_ROOT\Handinput\shell\open\command]
@="\"C:\\Program Files (x86)\\SogouInput\\Components\\HandInput\\1.1.0.2082\\handinput.exe\" \"%1\""
txt后缀改为reg,并运行,该内容主要功能就是把插件写到注册表。
说明:
注册名称:Handinput
安装路径:C:\\Program Files (x86)\\SogouInput\\Components\\HandInput\\1.1.0.2082\\handinput.exe

<!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> <script type="text/javascript" > function loadIme() { var e = document.createElement('script'); e.setAttribute('src', ' http://web.pinyin.sogou.com/web_ime/init.js'); document.body.appendChild(e); } function sogo() //打开手写输入法 { window.location.href="Handinput://test" } function close() //关闭手写输入法 { let cmd=new ActiveXObject("WScript.Shell"); cmd.run("taskkill /f /t /im handinput.exe",0); } </script> <style type="text/css"> #TextArea1 { height: 199px; width: 239px; } </style> </head> <body οnlοad="loadIme()" > <textarea id="TextArea1">fdsfsd</textarea> <input type="button" value="关闭搜狗输入法" οnclick="loadIme();this.value= this.value =='关闭搜狗输入法'?'开启搜狗输入法':'关闭搜狗输入法';" /> <input type="text" id="msg" οnfοcus="sogo()" /> <a href="handinput://">dakai</a> <input type="button" value="Send" οnclick="close()" /> </body> </html>
原文链接:https://blog.csdn.net/xiaoluozqin1/article/details/123702679
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构