(一)聲明外部方法
[DllImport("User32.dll")]
public static extern void keybd_event(byte bVK, byte bScan, Int32 dwFlags, int dwExtraInfo);
(二)首先通過切換輸入法來說實現中文輸入。即鍵盤CTRL+空格鍵切換輸入法。
//切換輸入法
private void changeInput()
{
//keybd_event函數的四個參數
//第一個參數:虛擬鍵碼(鍵盤鍵碼對照表見附錄);
//第二個參數:硬件掃描碼,一般設置爲0即可;
//第三個參數:函數操作的一個標誌位,如果值爲KEYEVENTF_EXTENDEDKEY則該鍵被按下,也可設置爲0即可,如果值爲KEYEVENTF_KEYUP則該按鍵被釋放;
//第四個參數:定義與擊鍵相關的附加的32位值,一般設置爲0即可。
//以下通過按下Ctrl+空格鍵切換輸入法
keybd_event(0x11, 0, 0, 0); //0x11---ctrl 按下
keybd_event(32, 0, 0, 0); // 32--空格鍵按下
keybd_event(32, 0, 0x02, 0);// 32--空格鍵彈起
keybd_event(0x11, 0, 0x02, 0); //0x11---ctrl彈起
}
(三)當在中文輸入狀態時,在輸入字母時,直接利用keybd_event模擬鍵盤輸入,屏幕上會彈出當前使用的中文輸入法的界面面板,並在其上列出可能的輸入詞彙。
private static void addNumkeyINput(byte input)
{
keybd_event(input, input, 0, 0);
keybd_event(input, input, 0x02, 0);
}
(四)理論上,通過keybd_event輸入數字鍵,從可能的輸入中文詞彙中選擇相應的結果即可。問題來啦:對於微軟自帶的拼音輸入法,無法通過keybd_event輸入數字來選擇,(原因??)不過還好的是,發現若使用搜狗輸入法,則可以用keybd_event輸入數字來選擇。