getUserPreferredUILanguages 函数 (winnls.h)
检索有关显示语言设置的信息。 有关详细信息,请参阅 用户界面语言管理。
语法
BOOL GetUserPreferredUILanguages(
[in] DWORD dwFlags,
[out] PULONG pulNumLanguages,
[out, optional] PZZWSTR pwszLanguagesBuffer,
[in, out] PULONG pcchLanguagesBuffer
);
参数
[in] dwFlags
标识语言格式和筛选的标志。 以下标志指定要用于显示语言列表的语言格式。 标志互斥,默认值为MUI_LANGUAGE_NAME。
值 | 含义 |
---|---|
MUI_LANGUAGE_ID | 检索语言标识符中的语言字符串 |
MUI_LANGUAGE_NAME | 检索语言 名称格式的语言 字符串。 |
[out] pulNumLanguages
指向 pwszLanguagesBuffer 中检索到的语言数量的指针。
[out, optional] pwszLanguagesBuffer
可选。 指向缓冲区的指针,此函数在其中检索按 dwflags 指定的格式排序的 null 分隔的显示语言列表。 此列表以两个空字符结尾。
或者,如果此参数设置为 NULL 且 pcchLanguagesBuffer 设置为 0,则该函数在 pcchLanguagesBuffer 中检索语言缓冲区的所需大小。 所需大小包括两个 null 字符。
[in, out] pcchLanguagesBuffer
指向 pwszLanguagesBuffer 指示的语言缓冲区的大小(以字符为单位)的指针。 从函数成功返回后, 参数包含检索到的语言缓冲区的大小。
或者,如果将此参数设置为 0 并且 pwszLanguagesBuffer 设置为 NULL,则该函数在 pcchLanguagesBuffer 中检索语言缓冲区的所需大小。
返回值
如果成功,则返回 TRUE ,否则返回 FALSE 。 若要获取扩展的错误信息,应用程序可以调用 GetLastError 函数,该函数可返回以下错误代码之一:
- ERROR_INSUFFICIENT_BUFFER。 提供的缓冲区大小不够大,或者错误地设置为 NULL。
如果函数因任何其他原因失败,则 pulNumLanguages 和 pcchLanguagesBuffer 的值未定义。
注解
指定MUI_LANGUAGE_ID时,检索到的语言字符串将是不包括前导 0x 的十六进制语言标识符,长度为 4 个字符。 例如,en-US 将返回为“0409”,en 返回为“0009”。
显示语言不能包含与补充区域设置相对应的多个语言界面包 (LIP) 语言。 如果列表包含这些语言中的多种语言,并且应用程序在函数调用中指定MUI_LANGUAGE_ID,则语言缓冲区将包含该语言的“1400”。 此字符串对应于 LOCALE_CUSTOM_UI_DEFAULT 的十六进制值。
此函数检索的语言列表具有以下特征:
- 每种语言表示有效的 NLS 区域设置。
- 每种语言都安装在操作系统上。
- 该列表为每种语言包含一个条目,没有重复条目。
- 如果列表为空或不符合这些验证条件,则改用系统首选 UI 语言列表。
C# 签名
[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
static extern System.Boolean GetUserPreferredUILanguages(
System.UInt32 dwFlags,
ref System.UInt32 pulNumLanguages,
System.IntPtr pwszLanguagesBuffer,
ref System.UInt32 pcchLanguagesBuffer
);
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | winnls.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |
另请参阅
GetSystemPreferredUILanguages 函数、 GetThreadPreferredUILanguages 函数、 GetThreadUILanguage 函数、 SetThreadPreferredUILanguages 函数、 多语言用户界面、 多语言用户界面函数