C#中程序控制輸入法的另一種思路

    最近寫程序要給各個文本框確定 中英文輸入法,在網上搜了一遍,基本的思路都是單獨用System.Windows.Form命名空間的InputLanguafe類中InstalledInputLanges方法搜索註冊輸入法,然後根據InputLanguage.Culture.Name是否"zh-CN",以及InputLanguage.LayoutName中是否不包含"Keyboard"來卻定中文輸入法我在XP中文版測試下InputLanguage.LayoutName給出的是輸入法的中文字符串,如:簡體中文 - 美式鍵盤;中文(簡體) - 全拼;極品五筆輸入法等,那位仁兄給出的例子大概是在英文系統下寫的吧。
    剛好看到一篇寫如何調整輸入法的文章,裏面提到的是修改註冊表裏有關輸入法的節點,先看看當前註冊的輸入法節點:HKEY_CURRENT_USER->Keyboard Layout->Preload,我的系統註冊表裏基本如下
 1->REG_SZ->00000804
2->REG_SZ->E0210804
......
在看看註冊表HKEY_LOCAL_MACHINE->CurrentControlSet->Control->Keyboard Layouts下00000804子節點和E0210840子節點的描述:
00000804中Layout Text項:中文 (簡體) - 美式鍵盤
e0210804中Layout Text項:紫光華宇拼音V5
    我全部瀏覽了一下HKEY_LOCAL_MACHINE->CurrentControlSet->Control->Keyboard Layouts的子節點,發現了一個規律,單字節輸入法註冊的子節點基本都是以0開始的,而雙字節(中文簡體、繁體,日文,韓文...)輸入法基本上都是以E開頭的字節點,由此想到了切換輸入法的另一種思路,在不同的文本框按特定的需求輸入中文或英文,換個角度無非就是輸入單字節字符或輸入雙字節字符,結合註冊表類和InputLanguages類寫出的程序,我想不管在中文(簡繁)或英文系統直接就切換輸入法,而不用在根據字符串來檢驗是否是中文輸入法了。
   畢竟只是個思路,具體代碼偶還沒實現,哪位大蝦編程快滴根據思路幫我驗證一下啊!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章