C#调用触滑输入法实现触摸屏键盘功能

背景

最近在做一个项目,用户端是触摸屏,涉及到一些表单数据的操作,因为是没有外接的鼠标键盘,所以想着当用户在操作表单的时候,能够把软件键盘输入法给调出来使用。

什么是触滑输入法

触滑输入法Swype,是针对触摸屏这种输入方式的革命性改进产品,Swype根据滑动的轨迹,智能分析并自动拼写出所输入的单词。由于这种输入方式不需要手指离开屏幕,因此被人称作滑行输入。.

网上找了下,发现了多文输入法是不错的选择,还有对应的sdk,看了下介绍。专为触控一体机设计的智能输入法,包含有以下功能: →进入新站点 支持全键盘、九宫格(T9模式)智能拼音、身份证键盘,数字键盘等。支持手写识别。支持智能笔画(T9笔画)。可以...

于是说干就干。

代码实现

1、加载动态库

  private const int WM_COPYDATA = 0x004A;        // 结构定义         public struct CopyDataStructIN        {            public IntPtr dwData;            public int cbData;            public IntPtr lpData;        }
        //1        [DllImport("dwApiLib.dll", EntryPoint = "DWAPI_SendCmdA", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]        private static extern bool DWAPI_SendCmdA(StringBuilder fullPath);
        [DllImport("User32.dll")]        public static extern int RegisterWindowMessage(string Name);

2、设置开机启动

 private void Form1_Load(object sender, EventArgs e)        {            // 输入法主程序:DWMain.exe            // 它应该是随电脑开机启动,如果没有启动,你也可以在这里启动它。            // 路径:安装目录\bin\windwos32\DWMain.exe
            textBox2.LostFocus += new EventHandler(txt_LostFocus); //失去焦点后发生事件            textBox2.GotFocus += new EventHandler(txt_GotFocus);  //获取焦点前发生        }

3、鼠标在文本框的时候,调用显示方法

 // 显示        private void buttonShow_Click(object sender, EventArgs e)        {            DWAPI_SendCmdA(new StringBuilder("show"));        }

4、离开的时候,退出输入法

 // 退出输入法        private void buttonClose_Click(object sender, EventArgs e)        {            DWAPI_SendCmdA(new StringBuilder("close"));        }

效果图如下

C#调用触滑输入法实现触摸屏键盘功能