[DllImport("Kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool GetUserPreferredUILanguages(
uint dwFlags,
out uint pulNumLanguages,
StringBuilder pwszLanguagesBuffer,
ref uint pcchLanguagesBuffer);
None.
Do you know one? Please contribute it!
None.
A possibly better type for pwszLanguagesBuffer is Char[] because StringBuilder will end at the first \0 character; which the native API uses as the delimiter for the array elements it returns.
static void DisplayUserPref()
{
StringBuilder languagesBuffer = new StringBuilder();
uint languagesCount, languagesBufferSize = 0;
if (GetUserPreferredUILanguages(
MUI_LANGUAGE_NAME,
out languagesCount,
null,
ref languagesBufferSize))
{
languagesBuffer.EnsureCapacity((int)languagesBufferSize);
if (GetUserPreferredUILanguages(
MUI_LANGUAGE_NAME,
out languagesCount,
languagesBuffer,
ref languagesBufferSize))
{
string[] languages = languagesBuffer.ToString().Split(new char[] { '\0' });
Console.WriteLine("GetUserPreferredUILanguages returns " + languages.Length + " languages:");
foreach (string language in languages)
Console.WriteLine(" " + language);
}
else
Console.WriteLine("GetUserPreferredUILanguages(2) returns #" + Marshal.GetLastWin32Error());
}
else
Console.WriteLine("GetUserPreferredUILanguages(1) returns #" + Marshal.GetLastWin32Error());
}
const uint MUI_LANGUAGE_ID = 0x4; // Use traditional language ID convention
const uint MUI_LANGUAGE_NAME = 0x8; // Use ISO language (culture) name convention