LoadKeyboardLayout

【勇芳软件工作室】汉化HomePreviousNext

Windows 95和Windows NT中的LoadKeyboardLayout的实现有很大的不同。为了适应这些差异,本参考页首先显示Windows 95实现,其次是Windows NT版本。

Windows 95:

LoadKeyboardLayout功能将新的键盘布局加载到系统中。一次可以加载几个键盘布局,但每个进程每次只能运行一个。加载多个键盘布局可以在布局之间快速切换。

// name of layout to load

LPCTSTR 【pwszKLID】,//要加载的布局名称
UINT 【旗】//键盘布局标志
); 

参数

【pwszKLID】

指向指定键盘布局名称的缓冲区。该名称是由主要语言标识符(低字)和设备标识符(高字)的十六进制值组成的字符串。例如,美国英语的语言标识符为0x0409,所以主要的美国英文版本命名为“00000409”。美国的变种英文布局,如Dvorak布局,被命名为“00010409”,“00020409”等。有关构成语言标识符的主要语言标识符和辅助语言标识符的列表,请参阅MAKELANGID宏。

【旗】

指定如何加载键盘布局。此参数可以是以下值之一:

含义
KLF_ACTIVATE如果给定的布局尚未加载,则该函数将加载并激活当前线程的布局,将布局插入到先前活动布局前面的键盘布局列表的头部。如果布局已经加载,并且没有给出KLF_REORDER值,则该函数只需旋转键盘布局列表,使下一个布局成为活动布局。
KLF_NOTELLSHELL当新版本加载时,防止ShellProc挂接过程接收到HSHELL_LANGUAGE钩子代码。当应用程序一个接一个地加载多个布局时,通常使用此值。将此值应用于除最后一个布局之外的所有布局会延迟shell的处理,直到添加所有布局。
KLF_REORDER将给定的布局移动到键盘布局列表的头部,使布局成为当前线程的活动布局。即使没有给出KLF_ACTIVATE,此值也会重新排序键盘布局列表。
KLF_REPLACELANG如果新布局与当前布局具有相同的语言标识符,则新布局将替换当前布局的布局。如果未指定此值,并且布局具有相同的语言标识符,则不会替换当前布局,并且函数返回NULL。
KLF_SUBSTITUTE_OK将给定的键盘布局与用户偏好的另一个布局取代。仅当注册表项HKEY_CURRENT_USER \\键盘布局\\替换显式定义替换布局时,才会发生替换。例如,如果键包含值“00000409”,值为“00010409”,则加载美国英文版(“00000409”)导致Dvorak美国英文版(“00010409”)要加载。引导时系统使用KLF_SUBSTITUTE_OK,建议所有应用程序也使用该值。

返回值

如果函数成功,则返回值是与请求的名称匹配的布局的键盘布局句柄,如果没有匹配的键盘可用则返回NULL。

备注

如果要使用与之前加载的版本相同的语言并且KLF_REPLACELANG标志设置为【不】,则调用失败。只有一个加载的布局可能与给定的语言相关联。(可以将多个IMEs加载到相同语言的关联)。

应用程序可以并且通常将要加载语言的默认布局或IME,并且可以通过仅指定语言标识符的字符串版本来实现。如果应用程序想要加载特定的布局或IME,它应该读取注册表以确定要传递给LoadKeyboardLayout的特定布局标识符。在这种情况下,激活一个区域设置的默认键盘布局句柄的请求将激活第一个匹配的。应使用从GetKeyboardLayout GetKeyboardLayoutListLoadKeyboardLayout之一返回的显式键盘布局句柄来激活特定的IME。

也可以看看

ActivateKeyboardLayout, GetKeyboardLayout, GetKeyboardLayoutName, MAKELANGID,UnloadKeyboardLayout

Windows NT:

LoadKeyboardLayout功能加载键盘布局。

// name of layout to load

LPCTSTR 【pwszKLID】,//布局名称缓冲区的地址
UINT 【旗】//键盘布局标志
); 

参数

【pwszKLID】

指向指定键盘布局名称的缓冲区。该名称应从与布局对应的语言标识符的十六进制值派生。例如,美国英语的语言标识符为0x0409,所以主要的美国英文版本命名为“00000409”。美国的变种英文布局,如Dvorak布局,被命名为“00010409”,“00020409”等。有关构成语言标识符的主要语言标识符和子语言标识符的列表,请参阅MAKELANGID宏。

【旗】

指定如何加载键盘布局。此参数可以是以下值之一:

含义
KLF_ACTIVATE如果该函数尚未加载,该函数将加载布局,并激活它。该值激活整个系统的布局,而不仅仅是调用线程。
KLF_REORDER只有设置KLF_ACTIVATE标志并且布局已经加载,此标志才有意义。如果满足这些条件并设置了KLF_REORDER位,则该函数将从系统的加载布局循环列表中的位置删除指定的布局,并将其作为活动布局放置在列表的头部。
 如果KLF_ACTIVATE位被设置并且布局被加载,但KLF_REORDER位未被设置,则该函数简单地旋转系统的加载布局的循环列表。
 如果设置了KLF_ACTIVATE标志,并且布局尚未加载,则将作为活动布局加载,并将其插入到先前激活布局之前的系统的键盘布局循环列表中。
KLF_SUBSTITUTE_OK在用户的配置文件(在注册表中的HKEY_CURRENT_USER \\键盘布局\\替换)下查找指定的布局,以查找用户偏好的替换布局。例如,如果此部分名称“00000409”中的值等于“00010409”,则加载美国设有KLF_SUBSTITUTE_OK标志的英文版(“00000409”)将导致Dvorak美国英文版(“00010409”)要加载。
KLF_UNLOADPREVIOUS如果指定了KLF_ACTIVATE,并且布局被成功加载并激活,则该函数将卸载先前激活的布局。否则,该函数将忽略此标志。

返回值

如果函数成功,则返回值是键盘布局的句柄。

如果函数失败,返回值为NULL。要获取扩展错误信息,请调用GetLastError.

备注

一次可以加载几个键盘布局,但一次只能有一个。加载多个键盘布局可以在布局之间快速切换。

也可以看看

ActivateKeyboardLayout, GetKeyboardLayoutName, UnloadKeyboardLayout