Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" ( _ ByVal Locale As Long, _ ByVal LCType As Long, _ ByVal lpLCData As String, _ ByVal cchData As Long) As Long
GetLocaleInfo возвращает информацию о локальном контексте
В успешном случае возвращается число символов, записанных в буфер. Если параметр cchData равен 0, то возвращается число байт или символов, необходимых для хранения информации о локали. В случае ошибки возвращается 0. Для получения кода ошибки используйте функцию GetLastError, которая может вернуть следующие коды ошибок: ERROR_INSUFFICIENT_BUFFER, ERROR_INVALID_FLAGS, ERROR_INVALID_PARAMETER. Функция всегда возвращает информацию в текстовом формате. Если информация представлена в числовых значениях, то функция конвертирует число в текст, используя десятичную систему. Параметр LOCALE_FONTSIGNATURE возвращает строку без завершающего нулевого символа. В других случаях строки с завершающим нулевым символом.
LOCALE_SYSTEM_DEFAULT | Системный локальный контекст по умолчанию |
LOCALE_USER_DEFAULT | Пользовательский локальный контекст по умолчанию |
Const LOCALE_USER_DEFAULT = &H400 Const LOCALE_SENGCOUNTRY = &H1002 ' название страны на английском Const LOCALE_SENGLANGUAGE = &H1001 ' название языка на английском Const LOCALE_SNATIVELANGNAME = &H4 ' название языка на местном языке Const LOCALE_SNATIVECTRYNAME = &H8 ' название страны на местном языке Private Sub Form_Load() MsgBox "Вы живете в " _ & GetInfo(LOCALE_SENGCOUNTRY) _ & " (" & GetInfo(LOCALE_SNATIVECTRYNAME) _ & ")," & vbCrLf & "и говорите на " _ & GetInfo(LOCALE_SENGLANGUAGE) _ & " (" & GetInfo(LOCALE_SNATIVELANGNAME) & ").", vbInformation End Sub Public Function GetInfo(ByVal lInfo As Long) As String Dim Buffer As String, Ret As String Buffer = String$(256, 0) Ret = GetLocaleInfo(LOCALE_USER_DEFAULT, lInfo, Buffer, Len(Buffer)) If Ret > 0 Then GetInfo = Left$(Buffer, Ret - 1) Else GetInfo = "" End If End Function
GetSystemDefaultLCID, GetUserDefaultLCID