GetProcessPreferredUILanguages 函数 (winnls.h)

检索进程首选 UI 语言。 有关详细信息,请参阅 用户界面语言管理

语法

BOOL GetProcessPreferredUILanguages(
  [in]            DWORD   dwFlags,
  [out]           PULONG  pulNumLanguages,
  [out, optional] PZZWSTR pwszLanguagesBuffer,
  [in, out]       PULONG  pcchLanguagesBuffer
);

参数

[in] dwFlags

标识要用于进程首选 UI 语言的语言格式的标志。 标志互斥,默认值为MUI_LANGUAGE_NAME。

含义
MUI_LANGUAGE_ID
检索语言 标识符格式的语言 字符串。
MUI_LANGUAGE_NAME
检索语言 名称格式的语言 字符串。

[out] pulNumLanguages

指向 在 pwszLanguagesBuffer 中检索的语言数量的指针。

[out, optional] pwszLanguagesBuffer

可选。 指向双 null 终止的多字符串缓冲区的指针,函数在此缓冲区中按优先顺序(从最可取的顺序开始)检索有序的 null 分隔列表。

或者,如果此参数设置为 NULL 并且 pcchLanguagesBuffer 设置为 0,则该函数在 pcchLanguagesBuffer 中检索语言缓冲区的所需大小。 所需的大小包括两个 null 字符。

[in, out] pcchLanguagesBuffer

指向 pwszLanguagesBuffer 指示的语言缓冲区的大小(以字符为单位)的指针。 从 函数成功返回后,参数包含检索到的语言缓冲区的大小。

或者,如果此参数设置为 0 并且 pwszLanguagesBuffer 设置为 NULL,则该函数在 pcchLanguagesBuffer 中检索语言缓冲区的所需大小。

返回值

如果成功,则返回 TRUE ,否则返回 FALSE 。 若要获取扩展错误信息,应用程序可以调用 GetLastError,这会返回以下错误代码之一:

  • ERROR_INSUFFICIENT_BUFFER。 提供的缓冲区大小不够大,或者错误地设置为 NULL
  • ERROR_INVALID_PARAMETER。 任何参数值都无效。
如果进程首选 UI 语言列表为空,或者为进程指定的语言无效,则函数将成功并返回 pwszLanguagesBuffer 中的空多字符串,并在 pcchLanguagesBuffer 参数中返回 2。

注解

根据应用程序指定的标志,此函数可以检索由进程首选 UI 语言组成的列表。 如果遇到重复语言,函数仅检索重复语言的第一个实例。

指定MUI_LANGUAGE_ID时,检索到的语言字符串将是十六进制语言标识符

不包括前导 0x,长度为 4 个字符。 例如,将返回 en-US

为“0409”,en 为“0009”。

注意 建议MUI_LANGUAGE_ID使用MUI_LANGUAGE_NAME。
 

C# 签名

[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
        static extern System.Boolean GetProcessPreferredUILanguages(
            System.UInt32 dwFlags,
            ref System.UInt32 pulNumLanguages,
            System.IntPtr pwszLanguagesBuffer,
            ref System.UInt32 pcchLanguagesBuffer
            );

要求

   
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
目标平台 Windows
标头 winnls.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

多语言用户界面

多语言用户界面函数

SetProcessPreferredUILanguages