SetThreadUILanguage 函数 (winnls.h)

设置当前线程的用户界面语言。

Windows Vista 及更高版本: 此函数无法清除线程首选 UI 语言列表。 MUI 应用程序应调用 SetThreadPreferredUILanguages 以清除语言列表。

Windowsxp: 此函数仅限于允许操作系统标识和设置可在 Windows 主机上安全使用的值。

语法

LANGID SetThreadUILanguage(
  [in] LANGID LangId
);

参数

[in] LangId

线程用户界面语言的语言标识符

Windows Vista 及更高版本: 应用程序可以指定语言标识符 0 或非零标识符。 有关详细信息,请参见“备注”部分。

Windowsxp: 应用程序只能将此参数设置为 0。 此设置会导致函数选择最支持控制台显示的语言。 有关详细信息,请参见“备注”部分。

返回值

如果成功,则返回输入语言标识符。 如果输入标识符为非零值,则函数将返回该值。 如果语言标识符为 0,则函数始终成功并返回最支持 Windows 控制台的语言的标识符。 请参阅“备注”部分。

如果输入语言标识符为非零且函数失败,则返回值与输入语言标识符不同。 若要获取扩展错误信息,应用程序可以调用 GetLastError

注解

创建线程时,线程用户界面语言设置为空,线程的用户界面以用户选择的语言显示。 此函数使应用程序能够更改当前正在运行的线程的用户界面语言。

Windows Vista 及更高版本: 调用此函数并为语言标识符指定 0 与使用设置MUI_CONSOLE_FILTER标志调用 SetThreadPreferredUILanguages 相同。 如果应用程序指定有效的非零语言标识符,则函数会为线程设置特定的用户界面语言。 为语言标识符指定 0 后,应用程序不能使用以下任何常量来对应于语言标识符:

Windowsxp: 当应用程序调用语言标识符为 0 的此函数时,该函数首先验证当前用户界面不需要 Uniscribe,并且控制台 代码页支持它。 如果用户界面通过这些测试,函数将使用提供的值。 否则,函数会将线程用户界面语言更改为 Windows 控制台可以显示的语言。 Windows XP 不支持独立于线程区域设置的线程用户界面语言的概念。 因此,此函数更改 Windows XP 上的线程区域设置。 根据用户和系统首选的 UI 语言、非 Unicode 应用程序的语言以及控制台的功能,应用程序可以轻松地设置线程以使用最适合控制台显示的语言。

C# 签名

[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
        static extern System.UInt16 SetThreadUILanguage(
            System.UInt16 LangId
            );

要求

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

另请参阅

GetThreadUILanguage

多语言用户界面

多语言用户界面函数

SetThreadPreferredUILanguages