LoadKeyboardLayoutA 函式 (winuser.h)
將新的輸入地區設定識別碼(先前稱為鍵盤配置)載入系統。
Windows 8 之前: 一次可以載入數個輸入地區設定標識符,但一次只能有一個進程作用中。 載入多個輸入地區設定識別碼可讓您快速在它們之間切換。
從 Windows 8 開始: 整個系統載入輸入地區設定標識碼。 如果目前進程沒有擁有具有鍵盤焦點的視窗,則此函式不會有任何作用。
語法
HKL LoadKeyboardLayoutA(
[in] LPCSTR pwszKLID,
[in] UINT Flags
);
參數
[in] pwszKLID
類型:LPCTSTR
要載入的輸入地區設定識別碼名稱。 此名稱是由 語言標識碼 (低字) 和裝置識別元 (高字) 的十六進位值所組成的字串。 例如,美式英文的語言標識碼為 0x0409,因此主要美國英文版面配置會命名為 「00000409」。。 美國英文版面配置(如 Dvorak 版面配置)的變體名稱為 「00010409」、“00020409”等等。
如需 Windows 提供的輸入配置清單,請參閱 windows的
[in] Flags
類型:UINT
指定要載入輸入地區設定識別碼的方式。 此參數可以是下列其中一或多個值。
價值 | 意義 |
---|---|
|
Windows 8 之前: 如果尚未載入指定的輸入地區設定識別碼,函式會載入並啟動目前線程的輸入地區設定標識碼。
從 Windows 8 開始: 如果尚未載入指定的輸入地區設定識別碼,函式會載入並啟動系統的輸入地區設定識別碼。 |
|
在 Windows 8 之前 : 防止載入新的輸入地區設定標識符時,ShellProc 攔截程式收到 HSHELL_LANGUAGE 攔截程式。 當應用程式逐一載入多個輸入地區設定標識碼時,通常會使用此值。 將此值套用至最後一個輸入地區設定標識符,會延遲殼層處理,直到新增所有輸入地區設定標識符為止。
從 Windows 8 開始: 在此案例中,系統會為整個系統設定最後一個輸入地區設定標識符。 |
|
Windows 8 之前: 將指定的輸入地區設定識別碼移至輸入地區設定標識符清單的前端,使該地區設定標識碼成為目前線程的作用中地區設定標識碼。 此值會重新排序輸入地區設定標識符清單,即使未提供 KLF_ACTIVATE 也一樣。
從 Windows 8 開始: 將指定的輸入地區設定識別子移至輸入地區設定標識符清單的標頭,使該地區設定標識碼成為系統的使用中地區設定標識符。 此值會重新排序輸入地區設定標識符清單,即使未提供 KLF_ACTIVATE 也一樣。 |
|
如果新的輸入地區設定標識碼與目前輸入地區設定標識碼具有相同的語言標識碼,新的輸入地區設定標識符會將目前的標識元取代為該語言的輸入地區設定標識碼。 如果未提供此值,而且輸入地區設定識別碼具有相同的語言識別碼,則不會取代目前的輸入地區設定識別碼,而且函式會傳回 NULL。 |
|
以使用者慣用的另一個地區設定取代指定的輸入地區設定標識碼。 系統會從此旗標集開始,建議您的應用程式一律使用此旗標。 只有在登錄機碼 HKEY_CURRENT_USER\Keyboard Layout\Substitutes 明確定義替代地區設定時,才會發生替代。 例如,如果索引鍵包含值為 「00010409」 的值名稱 「00000409」,則載入美國版面配置 (“00000409”) 會改為載入 United States-Dvorak 版面配置 (“00010409”)。 系統會在開機時使用 KLF_SUBSTITUTE_OK,而且建議所有應用程式在載入輸入地區設定標識符時使用此值,以確保已選取使用者的喜好設定。 |
|
Windows 8 之前: 此旗標僅適用於 KLF_ACTIVATE。 啟動整個進程的指定輸入地區設定識別碼,並將 WM_INPUTLANGCHANGE 訊息傳送至目前線程的 [焦點] 或 [使用中] 視窗。 一般而言,LoadKeyboardLayout 只會啟動目前線程的輸入地區設定標識符。
從 Windows 8 開始: 不使用此旗標。 如果目前進程擁有具有鍵盤焦點的視窗,LoadKeyboardLayout 一律會啟動整個系統的輸入地區設定標識符。 |
|
不支援此旗標。 請改用 UnloadKeyboardLayout 函式。 |
傳回值
類型:HKL
如果函式成功,傳回值會是對應至 pwszKLID 中所指定名稱的輸入地區設定識別碼 ,。 如果沒有相符的地區設定可用,則傳回值是系統的默認語言。
如果函式失敗,傳回值為NULL。 如果從應用程式目錄載入版面配置連結庫,就會發生這種情況。
若要取得擴充的錯誤資訊,請呼叫 GetLastError。
言論
輸入地區設定標識碼是比鍵盤版面配置更廣泛的概念,因為它也可以包含語音轉換程式、輸入法編輯器(IME)或任何其他形式的輸入。
應用程式可以且通常會載入語言的預設輸入地區設定識別碼或 IME,而且只能指定語言識別元的字串版本來執行此動作。 如果應用程式想要載入特定的地區設定或 IME,它應該讀取登錄,以判斷要傳遞至 LoadKeyboardLayout的特定輸入地區設定識別符。 在此情況下,啟動地區設定的預設輸入地區設定標識碼的要求將會啟動第一個相符的標識碼。 應使用 從 GetKeyboardLayout 傳回的明確輸入地區設定標識符,或 LoadKeyboardLayout來啟動特定的 IME。
Windows 8 之前: 此函式只會影響目前進程或線程的配置。
從 Windows 8 開始: 此函式會影響整個系統的版面配置。
注意
winuser.h 標頭會將 LoadKeyboardLayout 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | winuser.h (包括 Windows.h) |
連結庫 | User32.lib |
DLL | User32.dll |
另請參閱
概念
其他資源
參考