在Dot Net中,InputLanguage對象是“提供方法和字段以管理輸入語言。無法繼承此類。”
InputLanguage對象中InstalledInputLanguages方法獲得系統已經安裝的輸入法;CurrentInputLanguage方法是獲取或設置當前輸入法;DefaultInputLanguage方法是獲取系統的默認輸入法。通過InputLanguage對象的這三個方法,可以設置指定的輸入法。
而在筆者將程序給他人使用時,卻意外的在其中一台機器上報錯。由於是已經編譯好的程序,而且又不在筆者的身邊,故只知道是InputLanguage對象出了問題,而具體的錯誤編號不知道。
通過QQ遠程觀看了錯誤的提示後,第一感覺就是他沒有裝中文輸入法。可是,他明明裝了輸入法,有搜狗、QQ拼音等。輸入法使用也正常。
出於直覺,查看他的“文字服務和輸入語言”窗口。正常的應該象下面一樣。
可是意外的現象出現了,在他的電腦上這個是一片空白,下面提示一行字“檢測到不兼容的鍵盤驅動程序該對話框已經被禁用”。
在網上搜了搜解決方法。發現由於種種原因,系統注冊表中HKEY_LOCAL_MACHINE\SYSTEMCurrentControlSet\Control\Keyboard Layouts的鍵值下的內容全被刪除了。
詳情參看“文字服務和輸入語言的選項顯示空白”。
按照上文的方法,將缺失的注冊表部分導入到他的系統中。OK!解決了。不再報錯。
由此可以知道,InputLanguage對象是通過訪問注冊表來控制輸入法的。一旦注冊表的內容有誤。也就導致了錯誤的產生。
不過,難以理解的是為何注冊表出錯,而輸入法卻能正常使用。