問題是這樣的:我必須與用戶的語言設置爲簡體中國和鍵盤「中國(簡體) - 微軟拼音新體驗輸入ST」。設置設備標識符()
通過在控制面板(區域 - >鍵盤和語言)中手動設置這個組合,然後運行一個調用GetKeyboardLayoutName()的小測試程序,我發現KLID是00000804(據推測)。如果我從控制面板中的鍵盤和語言除去中國和運行這個:
HKL hKeyboardLayout = ::LoadKeyboardLayout(_T("00000804"), KLF_ACTIVATE | KLF_SETFORPROCESS);
那麼這種語言的確改變中國,但鍵盤的設置是錯誤的。輸入內容時,缺少「輸入法框」。
的MSDN page爲LoadKeyboardLayout()表示,這對pwszKLID參數:
輸入區域標識符的名稱來加載。該名稱是由語言標識符(低位字)的十六進制值和設備標識符(高位字)組成的字符串。例如,美國英語具有0x0409的語言標識符,所以主美國英文版式被命名爲「00000409」。美式英語版式的變體(例如Dvorak版式)被命名爲「00010409」,「00020409」等。
所以它看起來好像GeyKeyboardLayout()只報告語言標識符(英語 - 伯利茲爲中國),但「設備標識符」丟失。如何找到「微軟拼音新體驗輸入法」的設備標識符?
我不允許上面張貼,因爲我沒有足夠的聲譽另請參照:http://blogs.msdn。 com/b/michkap/archive/2009/09/15/9894707.aspx –
您的代碼必須如此複雜嗎?你爲什麼不採用從GetKeyboardLayoutList()返回的值? – Elmue