背景
最近在做一個項目,用戶端是觸摸屏,涉及到一些表單數據的操作,因為是沒有外接的鼠標鍵盤,所以想著當用戶在操作表單的時候,能夠把軟件鍵盤輸入法給調出來使用。
什么是觸滑輸入法
觸滑輸入法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"));}
效果圖如下