背景
最近在做一个项目,用户端是触摸屏,涉及到一些表单数据的操作,因为是没有外接的鼠标键盘,所以想着当用户在操作表单的时候,能够把软件键盘输入法给调出来使用。
什么是触滑输入法
触滑输入法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.exetextBox2.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"));}
效果图如下