通过注册表方式启动和关闭手写输入法(方法适合各种应用)

发布时间 2023-07-31 17:37:17作者: bxzjzg

求: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>    
View Code

 

原文链接:https://blog.csdn.net/xiaoluozqin1/article/details/123702679