LoadKeyboardLayout概述
函式功能:該函式給系統中裝入一種新的鍵盤布局,可以同時裝入幾種不同的鍵盤布局,任一時刻僅有一個進程是活動的,裝入多個鍵盤布局使得在多種布局間快速切換。
函式原型:HKL LoadKeyboardLayout(LPCTSTR pwszKLID,UINT Flags);
LoadKeyboardLayout簡介
參數描述
pwszKLID:緩衝區中的存放裝入的鍵盤布局名稱,名稱是由語言標識符(低位字)和設備標識符(高位字)組成的十六進制值串,例如 U.S.英語對應的語言標識符為DX0409,則基本的U.S.英語鍵盤布局命名為“0000409”。U.S.英語鍵盤布局的變種(例如Dvorak布局)命名為“00010409”,“00020409”等。
Flags:指定如何裝入鍵盤布局,該參數可以是如下的值。
KLF_ACTIVATE:若指定布局尚未裝入,該函式為當前執行緒裝入並激活它。
KLF_NOTELLSHELL:當裝入新的鍵盤布局時,禁止一個ShellProe過程接收一個HSHELL_LANGUAGE代碼。
當應用程式依次裝入多個鍵盤布局時,對除最後一個鍵盤布局外的所有鍵盤布局使用該值,將會延遲Shell的處理直到所有的鍵盤布局均己被裝入。
KLF_RECOROER:將指定鍵盤布局移動到布局表的頭部,使得對於當前執行緒,該布局的活動的。若不提供DLF_ACTIVATE值,則該值記錄鍵盤布局表。
KLF_REPLACE_LANG:Windows NT 4.0或Windows 95以上支持,若新布局與當前布局有同樣的語言標識符,那么新布局替代當前布局作為那種語言的鍵盤布局,若未提供該值,而鍵盤布局又有同樣的標識符,則當前布局不被替換,函式返回NULL值。
KLF_SUBSTITUTE_OK:用用戶喜歡的鍵盤布局來替換給定布局,系統初始時設定該標誌,並且建議始終設定該標誌,僅當在註冊HKEY_CURRENT_USER/Keyboard Layout/Substitate下定義了一個替代布局時,才發生替換。例如,在名為00000409的部分中有一個多於00010409的值,則設定該標誌裝入U.S.英語鍵盤布局會導致Dvorak US.英語鍵盤布局的裝入。系統引導時使用該參數,建議在所有應用程式裝入鍵盤布局時使用該值,以確保用戶喜歡的鍵盤布局被選取。
KLF_SETFORPROCESS:Windows NT 5.0該位僅法與KLF_ACTIVATE一起使用時才有效,為整個進程激活指定鍵盤布局,且傳送WM_INPUTLANGCHANGE訊息以當前進程的所有執行緒。典型的LoadKeyboardLayWut僅為當前執行緒激活一個鍵盤布局。
KLF_UNLOADPREVIOS:WindowsNT5.0,Windows95,Windows98都不支持,僅當與KLF_ACTIVATE一起使用時才有效,僅當裝入且激活指定鍵盤布局成功,先前的布局才能被卸載,建議使用unLoadKeyboardLayout函式。
返回值:若函式調用成功,返回與要求的名字匹配的鍵盤布局句柄。若沒有匹配的布局,則返回NULL。
備註:應用程式可以通過僅定義語言標識符的串來裝入該語言的IME向預設鍵盤布局。若應用程式想裝入IME的指定鍵盤布局,就必須讀註冊信息以確定傳遞給LoadKeyboardLayout返回的鍵盤布局句柄來激活。
Windows 95和Windows 98:若裝載與原先鍵盤布局使用同種語言的布局,且KLF_REPLACELANG標誌未被設定,則函式調用失敗,僅有一個鍵盤布局可與給定語言相關聯。(對於裝載與同一語言相關的多IME也是可接受的)。
LoadKeyboardLayout的環境
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;頭檔案:winuser.h;庫檔案:user32.lib;Unicode:在Windows NT上實現為Unicode和ANSI兩種版本。