VB.NET调用屏幕键盘控件

VB.NET调用屏幕键盘控件简直就是小事一桩,复制十几行代码就可以搞定触摸屏设备上各种输入法支持(包括但不限于英文和中文输入);在运行演示程序之前请正确安装屏幕键盘控件,安装方法参考:屏幕键盘控件安装指南

一、演示程序界面

"屏幕键盘控件"演示(VB.NET)
屏幕键盘控件演示程序(VB.NET版)

基于强大的.NET Framework运行时环境,VB.NET和C#或者其它开发语言一样,代码量很小就可以集成屏幕键盘功能。

二、演示程序下载

本地下载:屏幕键盘控件演示程序(VB版)

三、演示程序代码

Imports AxTouchKeyboard
'版权所有 © 2018-2022 德常信息科技(上海)有限公司
'不支持IDE环境调试键盘控件, 参考本DEMO程序直接编码运行。
'更多支持的输入法名称见官网: https://taosung.tech/index.php/2019/05/16/imelist/

Public Class TouchKeyboardForm

    Private ScreenKb As AxScreenKeyboard = Nothing
    Private ImeNames() As String = {"美式键盘", "搜狗拼音", "微软五笔", "搜狗手写", "搜狗语音"}

    Public Sub New()
        InitializeComponent()
        InitTouchKeyboard()
    End Sub

    Private Sub InitTouchKeyboard()
        ScreenKb = New AxScreenKeyboard
        ScreenKb.Parent = pnTouchKeyboard
        pnTouchKeyboard.Controls.Add(ScreenKb)
        ScreenKb.Dock = DockStyle.Fill
    End Sub

    Private Sub TouchKeyboardForm_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
        If Not (ScreenKb Is Nothing) Then
            btnEnglish.Checked = True
        End If
    End Sub

    Private Sub ImeNameCheckedChanged(sender As Object, e As EventArgs) Handles btnWubi.CheckedChanged, btnSpeechInput.CheckedChanged, btnPinyin.CheckedChanged, btnHandInput.CheckedChanged, btnEnglish.CheckedChanged
        Dim btnIme As RadioButton = sender

        If Not (ScreenKb Is Nothing) And Not (btnIme Is Nothing) And btnIme.Checked Then
            ScreenKb.ImeName = ImeNames(btnIme.TabIndex)
        End If
    End Sub
End Class

 

四、演示程序开发指南

1、新建项目代码生成CPU目标平台设置成x86平台;

2、项目必须引用TouchKeyboard.dllTouchKeyboard.Net.dll,并且引用后属性设置里Embed Interop Types要设置成false,保证项目生成时自动复制这两个库到目标程序文件夹;

3、窗体显示屏幕键盘的位置事先拖拉一个Panel组件,在运行时生成屏幕键盘控件实例,并且把Panel作为此实例的父控件,参考演示程序pnTouchKeyboard对象的定义;

4、输入法名称数组的定义可以根据项目需求自由组合,屏幕键盘控件支持的输入法名称完整列表请参考博文:屏幕键盘控件支持的输入法;需要注意的是英语输入法名称统一定义为”美式键盘”;

5、演示程序界面上每个RadioButtonTabIndex属性设置和输入法名称数组ImeNames下标一致,这样不用写一堆If…Then…语句。

6、VB.NET使用ActiveX控件官方指导:How to: Work with ActiveX Controls (Visual Basic)

五、技术支持

除了在官网推送技术类博文外,我们欢迎您来电子邮件获得业务或技术支持,如果您有什么好的建议也请给我们来邮件,谢谢。

屏幕键盘技术支持邮箱
屏幕键盘技术支持邮箱

JavaScript调用屏幕键盘控件

JavaScript调用屏幕键盘控件表面上看起来有点复杂,仔细阅读完本文后一切都会变得轻轻松松。在运行下面的演示程序前请先正确安装屏幕键盘控件,安装方法详见:屏幕键盘控件安装指南

一、屏幕键盘控件演示(IE页面)

"屏幕键盘控件"演示(IE版)
屏幕键盘控件演示(HTML版)

二、演示页面下载

本地下载:屏幕键盘控件演示程序(HTML版)

三、演示IE页面源代码

<html>
    <!-- 版权所有 © 2018-2019 德常信息科技(上海)有限公司 -->
    <!-- 更多支持的输入法名称见官网:https://taosung.tech/index.php/2019/05/16/imelist/ -->
    <head>
        <script language="JScript">
            var lastFocusElement = null;

            function InitImm()
            {
                document.getElementById('OneLine').focus();
                document.getElementById('MsWubi').click();
            }

            function ChangeImm()
            {
                if (document.getElementById('MsWubi').checked) {
                    TouchKB.ImeName = "微软五笔";
                } 
                else if (document.getElementById('MsPinyin').checked) {
                    TouchKB.ImeName = "微软拼音";
                } 
                else if (document.getElementById('SogouWubi').checked) {
                    TouchKB.ImeName = "搜狗五笔";
                } 
                else if (document.getElementById('SogouPinyin').checked) {
                    TouchKB.ImeName = "搜狗拼音";
                } 
                else if (document.getElementById('SogouHandInput').checked) {
                    TouchKB.ImeName = "搜狗手写";
                } 
                else if (document.getElementById('SogouSpeechInput').checked) {
                    TouchKB.ImeName = "搜狗语音";
                } 
                else if (document.getElementById('QqWubi').checked) {
                    TouchKB.ImeName = "QQ五笔";
                } 
                else if (document.getElementById('QqPinyin').checked) {
                    TouchKB.ImeName = "QQ拼音";
                } 
                else if (document.getElementById('WangmaWubi').checked) {
                    TouchKB.ImeName = "王码五笔型";
                } 
                else if (document.getElementById('JipinWubi').checked) {
                    TouchKB.ImeName = "极品输入法";
                } 
                else if (document.getElementById('JidianWubi').checked) {
                    TouchKB.ImeName = "极点五笔";
                } 
                else if (document.getElementById('XunfeiPinyin').checked) {
                    TouchKB.ImeName = "讯飞输入法";
                } 
                else if (document.getElementById('BaiduWubi').checked) {
                    TouchKB.ImeName = "百度五笔";
                } 
                else if (document.getElementById('BaiduPinyin').checked) {
                    TouchKB.ImeName = "百度输入法";
                } 
                else if (document.getElementById('BaiduHandInput').checked) {
                    TouchKB.ImeName = "百度手写";
                } 
                else if (document.getElementById('BaiduSpeechInput').checked) {
                    TouchKB.ImeName = "百度语音";
                } 
                else if (document.getElementById('GooglePinyin').checked) {
                    TouchKB.ImeName = "谷歌拼音";
                } 
                else if (document.getElementById('SmartPinyin').checked) {
                    TouchKB.ImeName = "智能ABC";
                } 
                else
                {
                    TouchKB.ImeName = "美式键盘";
                }
                if (lastFocusElement != null)
                {
                    lastFocusElement.focus();
                }
            }

            function SaveFocus(Element)
            {
                lastFocusElement = Element;
            }
        </script>
    </head>
    <body onload="InitImm()">
        <br><br>
        <div id=TouchKeyboard>
            <table border="1">
                <tr>
                    <td align=center>单行输入</td>
                    <td><INPUT TYPE="text" id="OneLine" onBlur="SaveFocus(this)" style="width:100%"></td>
                </tr>
                <tr>
                    <td align=center>多行输入</td>
                    <td><textarea id="MultiLine" onBlur="SaveFocus(this)" style="width:100%" rows="10" spellcheck="false"></textarea></td>
                </tr>
                <tr>
                    <td align=center>输入法</td>
                    <td>
                        <input type="radio" name="IMM" id="English" onclick="ChangeImm()" />英语
                        <input type="radio" name="IMM" id="MsWubi" onclick="ChangeImm()" />微软五笔
                        <input type="radio" name="IMM" id="MsPinyin" onclick="ChangeImm()" />微软拼音
                        <input type="radio" name="IMM" id="SogouWubi" onclick="ChangeImm()" />搜狗五笔
                        <input type="radio" name="IMM" id="SogouPinyin" onclick="ChangeImm()" />搜狗拼音
                        <input type="radio" name="IMM" id="SogouHandInput" onclick="ChangeImm()" />搜狗手写
                        <input type="radio" name="IMM" id="SogouSpeechInput" onclick="ChangeImm()" />搜狗语音
                        <input type="radio" name="IMM" id="QqWubi" onclick="ChangeImm()" />QQ五笔
                        <input type="radio" name="IMM" id="QqPinyin" onclick="ChangeImm()" />QQ拼音
                        <input type="radio" name="IMM" id="WangmaWubi" onclick="ChangeImm()" />王码五笔
                        <input type="radio" name="IMM" id="JipinWubi" onclick="ChangeImm()" />极品五笔
                        <input type="radio" name="IMM" id="JidianWubi" onclick="ChangeImm()" />极点五笔<br>
                        <input type="radio" name="IMM" id="XunfeiPinyin" onclick="ChangeImm()" />讯飞拼音
                        <input type="radio" name="IMM" id="BaiduWubi" onclick="ChangeImm()" />百度五笔
                        <input type="radio" name="IMM" id="BaiduPinyin" onclick="ChangeImm()" />百度拼音
                        <input type="radio" name="IMM" id="BaiduHandInput" onclick="ChangeImm()" />百度手写
                        <input type="radio" name="IMM" id="BaiduSpeechInput" onclick="ChangeImm()" />百度语音
                        <input type="radio" name="IMM" id="GooglePinyin" onclick="ChangeImm()" />谷歌拼音
                        <input type="radio" name="IMM" id="SmartPinyin" onclick="ChangeImm()" />智能ABC
                    </td>
                </tr>
                <tr align="center">
                    <td align=center>屏幕键盘</td>
                    <td align=center>
                        <OBJECT
                            ID="TouchKB"
                            WIDTH=1024
                            HEIGHT=275
                            TYPE="application/x-oleobject"
                            CLASSID="CLSID:8C358811-5C86-444A-9F51-0E4A782B1A9D"
                            CODEBASE="https://taosung.tech/TouchKeyboard/TouchKB.cab#version=1,0,0,0">
                        </OBJECT>
                    </td>
                </tr>
            </table>
        </div>
    </body>
</html>

四、核心源代码详解

1、页面加载时先执行InitImm函数激活输入框焦点,然后再设置默认输入法;演示代码默认输入法是“微软五笔”,可以根据业务需要自由设定其它名称,输入法名称完整列表见:屏幕键盘控件输入法支持

function InitImm()
{
    document.getElementById('OneLine').focus();
    document.getElementById('MsWubi').click();
}

2、切换输入法时先保留当前焦点对象,利用onBlur事件的回调函数SaveFocus

<tr>
    <td align=center>单行输入</td>
    <td><INPUT TYPE="text" id="OneLine" onBlur="SaveFocus(this)" style="width:100%"></td>
</tr>
<tr>
    <td align=center>多行输入</td>
    <td><textarea id="MultiLine" onBlur="SaveFocus(this)" style="width:100%" rows="10" spellcheck="false"></textarea></td>
</tr>
<script language="JScript">
    
    var lastFocusElement = null;

    function SaveFocus(Element)
    {
        lastFocusElement = Element;
    }

</script>

3、执行切换输入法函数ChangeImm的最后必须恢复焦点对象,好处是用户实际使用屏幕键盘时不需要手动重复激活输入对象,一点小改变大大提高用户体验;

<script language="JScript">
    var lastFocusElement = null;

    // ...
    // ...
    // ...
    function ChangeImm()
    {
        // ...
        // ...
        // ...
        if (lastFocusElement != null)
        {
            lastFocusElement.focus();
        }
    }
</script>

五、技术支持

除了在官网推送技术类博文外,我们欢迎您来电子邮件获得业务或技术支持,如果您有什么好的建议也请给我们来邮件,谢谢。

屏幕键盘技术支持邮箱
屏幕键盘技术支持邮箱

C#调用屏幕键盘控件

C#调用屏幕键盘控件其实很简单,新建一个项目只需要复制十几行代码就可以轻松搞定;运行下面的演示程序前请先正确安装屏幕键盘ActiveX控件,安装方法详见:屏幕键盘控件安装指南

一、演示程序界面

屏幕键盘演示程序(.Net Framework版本)
屏幕键盘控件演示程序(C#版)

二、演示程序下载

本地下载:屏幕键盘控件演示程序(C#版)

三、演示程序代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AxTouchKeyboard;

// 版权所有 © 2018-2019 德常信息科技(上海)有限公司
// 不支持IDE环境调试键盘控件,参考本DEMO程序直接编码运行。
// 更多支持的输入法名称见官网:https://taosung.tech/index.php/2019/05/16/imelist/
namespace TouchKeyboardDemo.Net
{
    public partial class TouchKeyboardForm : Form
    {
        private AxScreenKeyboard ScreenKb = null;
        private string[] ImeNames = { "美式键盘", "搜狗拼音", "微软五笔", "搜狗手写", "搜狗语音" };

        public TouchKeyboardForm()
        {
            InitializeComponent();
            InitTouchKeyboard();
        }

        private void InitTouchKeyboard()
        {
            ScreenKb = new AxScreenKeyboard();
            ScreenKb.Parent = pnTouchKeyboard;
            pnTouchKeyboard.Controls.Add(ScreenKb);
            ScreenKb.Dock = DockStyle.Fill;
        }

        private void TouchKeyboardForm_Shown(object sender, EventArgs e)
        {
            if (ScreenKb != null)
            {
                btnEnglish.Checked = true;
            }
        }

        private void ImeNameCheckedChanged(object sender, EventArgs e)
        {
            RadioButton btnIme = sender as RadioButton;

            if (ScreenKb != null && btnIme != null && btnIme.Checked)
            {
                ScreenKb.ImeName = ImeNames[btnIme.TabIndex];
            }
        }
    }
}

四、演示程序开发指南

1、新建项目代码生成CPU目标平台设置成x86平台;

2、项目必须引用TouchKeyboard.dllTouchKeyboard.Net.dll,并且引用后属性设置里Embed Interop Types要设置成false,保证项目生成时自动复制这两个库到目标程序文件夹;

3、窗体显示屏幕键盘的位置事先拖拉一个Panel组件,在运行时生成屏幕键盘控件实例,并且把Panel作为此实例的父控件,参考演示程序pnTouchKeyboard对象的定义。

4、输入法名称数组的定义可以根据项目需求自由组合,屏幕键盘控件支持的输入法名称完整列表请参考博文:屏幕键盘控件支持的输入法;需要注意的是英语输入法名称统一定义为“美式键盘”;

5、演示程序界面上每个RadioButtonTabIndex属性设置和输入法名称数组ImeNames下标一致,这样不用写一堆if…else…语句。

五、技术支持

除了在官网推送技术类博文外,我们欢迎您来电子邮件获得业务或技术支持,如果您有什么好的建议也请给我们来邮件,谢谢。

屏幕键盘技术支持邮箱
屏幕键盘技术支持邮箱

屏幕键盘控件支持的输入法

屏幕键盘控件支持的输入法(4大类)众多,下面给出部分列表;某些输入法官网因为自动区分PC端和手机端显示不同页面,所以下载输入法请用PC浏览器去官网下载。

一、手写输入法

搜狗和百度手写输入法安装后均支持本地工作,不需要上网环境,推荐使用搜狗手写输入法。如果对多字手写同时识别有偏好,也可以考虑百度手写输入法。其它手写输入法的支持需要定制开发。

二、语音输入法

  • 搜狗语音,搜狗拼音插件(推荐)
  • 百度语音,百度拼音插件

搜狗和百度的语音输入均要求在线使用,推荐使用搜狗语音输入法;目前离线语音输入法很匮乏,其它语音输入法的支持需要定制开发,欢迎给我们发邮件:

屏幕键盘技术支持邮箱
屏幕键盘技术支持邮箱

三、拼音输入法

四、五笔字型输入法

五、其它输入法

屏幕键盘控件切换输入法接口是通过输入法名称判断的,我们不但实测了市面上几乎所有主流输入法,而且还预留接口支持没有列出名称的输入法,只要名称正确完全可以和屏幕键盘控件协同工作。

屏幕键盘控件安装指南

屏幕键盘控件安装指南(3大步骤8个过程)阅读过程大约需要5分钟,下载控件安装程序后整个安装过程大约需要1分钟。

一、安装德常科技根证书

根证书安装详见博文:“德常科技根证书”安装指南。强烈建议安装根证书,根证书保障控件安全性和兼容性作用巨大,细节可以参考百度知道:代码签名证书有哪些作用

二、下载安装程序并验证代码签名

1、下载地址:屏幕键盘控件安装程序(SetupTouchKB.exe),轻点链接地址即可下载;
2、验证代码签名,用资源管理器选中安装程序,轻按鼠标右键,在弹出菜单中点击“属性(R)”子菜单,然后按下面的示意图查看代码签名是否正常。

"屏幕键盘控件"安装-数字签名列表示意图
屏幕键盘控件安装程序数字签名列表示意图
"屏幕键盘控件"安装-数字签名正常示意图
屏幕键盘控件安装程序数字签名正常示意图
"屏幕键盘控件"安装-代码签名证书正常示意图
屏幕键盘控件安装程序代码签名证书正常示意图

屏幕键盘ActiveX控件安装程序使用了SHA1和SHA256两种代码签名算法,完全兼容Windows XP及之后所有版本的Windows操作系统,同时验证两张证书签名可以增加安全性。验证代码签名可以有效防止代码伪装和木马攻击。

三、启动安装程序

用鼠标双击已下载安装程序SetupTouchKB.exe启动安装

"屏幕键盘控件"安装程序欢迎界面
屏幕键盘控件安装程序欢迎界面

四、阅读《用户许可授权协议

许可授权协议是用户和德常科技之间的法律协议,请务必仔细阅读,如果用户不同意协议内容,则请立即取消安装过程,本控件受软件知识产权相关法律、法规保护。

"屏幕键盘控件"安装程序许可授权界面
屏幕键盘控件安装程序许可授权界面

五、选择组件

屏幕键盘控件包括两个组件,一个是键盘控件组件,另一个是演示和注册快捷方式组件,建议用户不要修改,保持默认状态即可。

"屏幕键盘控件"安装程序组件选择界面
屏幕键盘控件安装程序组件选择界面

六、指定安装位置

安装过程中用户可以指定控件的安装位置,建议保持默认位置即可。

"屏幕键盘控件"安装程序选定安装位置界面
屏幕键盘控件安装程序选定安装位置界面

七、复制文件

指定位置并点击“安装”按钮后开始复制文件,用户无须任何操作。

"屏幕键盘控件"安装程序进度界面
屏幕键盘控件安装程序进度界面

八、完成安装

文件复制完成后,用户可以自主选择是否“启动屏幕键盘演示”和“显示自述文件”,建议用户保持默认勾选状态,详细了解控件各项功能和特色说明。

"屏幕键盘控件"安装程序完成界面
屏幕键盘控件安装程序完成界面

“德常科技根证书”安装指南

一、为什么要安装”德常科技根证书”?

德常科技官网上所有发布的控件或安装包都是通过代码签名证书进行数字签名的,经过数字签名的控件或安装包需要正确安装根证书后才能验证签名的有效性,签名验证可以防止冒充行为或木马攻击。

二、根证书在哪里下载?

“德常科技根证书”下载地址:https://taosung.tech/ca/root-ca.cer
请在官网指定地址下载根证书,否则可能会面临不必要的安全性风险!

三、安装详细说明在哪里下载?

下载地址1(PDF格式):德常科技根证书安装说明.pdf
下载地址2(WORD格式):德常科技根证书安装说明.docx

四、根证书安装是强制性要求吗?

根证书安装不是强制性要求,安装根证书是为了保证已发布代码的安全性和可靠性。对于C/S应用只要安装正常一般不会影响功能发挥,对于B/S应用强烈建议安装根证书,因为根证书可以最大限度地满足浏览器安全性要求,提高应用的安全性、兼容性和稳定性。