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

指定要載入輸入地區設定識別碼的方式。 此參數可以是下列一或多個值。

意義
KLF_ACTIVATE
0x00000001
在 Windows 8 之前:如果尚未載入指定的輸入地區設定標識碼,函式會載入並啟用目前線程的輸入地區設定識別符。

從 Windows 8 開始:如果尚未載入指定的輸入地區設定標識碼,函式會載入並啟用系統的輸入地區設定標識符。

KLF_NOTELLSHELL
0x00000080
在 Windows 8 之前:在載入新的輸入地區設定標識符時,防止ShellProc攔截程式收到HSHELL_LANGUAGE勾點程序代碼。 當應用程式逐一載入多個輸入地區設定標識碼時,通常會使用此值。 將此值套用至最後一個輸入地區設定標識符,會延遲殼層的處理,直到新增所有輸入地區設定標識符為止。

從 Windows 8 開始:在此案例中,系統會為整個系統設定最後一個輸入地區設定標識符。

KLF_REORDER
0x00000008
在 Windows 8 之前:將指定的輸入地區設定標識子移至輸入地區設定標識符清單的前端,讓該地區設定標識碼成為目前線程的作用中地區設定標識符。 此值會重新排序輸入地區設定標識符清單,即使未提供 KLF_ACTIVATE 也一樣。

從 Windows 8 開始:將指定的輸入地區設定標識子移至輸入地區設定標識符清單的前端,讓該地區設定標識碼成為系統的使用中地區設定標識碼。 此值會重新排序輸入地區設定標識符清單,即使未提供 KLF_ACTIVATE 也一樣。

KLF_REPLACELANG
0x00000010
如果新的輸入地區設定標識碼與目前的輸入地區設定標識碼具有相同的語言標識碼,則新的輸入地區設定標識符會取代目前的輸入地區設定標識碼作為該語言的輸入地區設定標識符。 如果未提供此值,而且輸入地區設定標識碼具有相同的語言標識符,則不會取代目前的輸入地區設定標識符,而且函式會傳回 NULL
KLF_SUBSTITUTE_OK
0x00000002
將指定的輸入地區設定識別碼取代為使用者慣用的另一個地區設定。 系統會從此旗標集開始,建議您的應用程式一律使用此旗標。 只有在登錄機碼 HKEY_CURRENT_USER\Keyboard Layout\Substitutes 明確定義替代地區設定時,才會發生替代。 例如,如果索引鍵包含值為 「00010409」 的值名稱 「00000409」,請改為載入美國版面配置 (“00000409”) 會導致 United States-Dvorak 配置 (“00010409”) 載載。 系統會在開機時使用 KLF_SUBSTITUTE_OK ,而且建議所有應用程式在載入輸入地區設定標識符時使用此值,以確保已選取使用者的喜好設定。
KLF_SETFORPROCESS
0x00000100
在 Windows 8 之前:此旗標僅適用於 KLF_ACTIVATE。 啟動整個進程的指定輸入地區設定標識碼,並將 WM_INPUTLANGCHANGE 訊息傳送至目前線程的 [焦點] 或 [使用中] 視窗。 一般而言, LoadKeyboardLayout 只會啟用目前線程的輸入地區設定標識符。

從 Windows 8 開始:不會使用此旗標。 如果目前的進程擁有具有鍵盤焦點的視窗,LoadKeyboardLayout 一律會啟動整個系統的輸入地區設定標識符。

KLF_UNLOADPREVIOUS
不支援此旗標。 請改用 UnloadKeyboardLayout 函式。

傳回值

類型: HKL

如果函式成功,傳回值就是對應至 pwszKLID 中所指定名稱的輸入地區設定識別符。 如果沒有相符的地區設定可用,則傳回值是系統的默認語言。

如果函式失敗,則傳回值為 NULL。 如果從應用程式目錄載入配置連結庫,就會發生這種情況。

若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

輸入地區設定標識碼是比鍵盤版面配置更廣泛的概念,因為它也可以包含語音轉換程式、輸入方法 編輯器 (輸入法) 或任何其他形式的輸入。

應用程式通常可以載入語言的預設輸入地區設定標識碼或 IME,而且只要指定語言識別碼的字串版本即可。 如果應用程式想要載入特定的地區設定或 IME,它應該讀取登錄來判斷要傳遞至 LoadKeyboardLayout 的特定輸入地區設定標識碼。 在此情況下,啟用地區設定的預設輸入地區設定標識符的要求將會啟用第一個相符專案。 應該使用 從 GetKeyboardLayoutLoadKeyboardLayout 傳回的明確輸入地區設定標識符來啟用特定的 IME。

在 Windows 8 之前:此函式只會影響目前進程或線程的配置。

從 Windows 8 開始:此函式會影響整個系統的版面配置。

注意

winuser.h 標頭會將 LoadKeyboardLayout 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 winuser.h (包括 Windows.h)
程式庫 User32.lib
Dll User32.dll

另請參閱

ActivateKeyboardLayout

概念

GetKeyboardLayoutName

鍵盤輸入

MAKELANGID

其他資源

參考

UnloadKeyboardLayout