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