Пример простого кода программы, с помощью которого можно определить страну, язык, денежный формат и формат написания дней недели компьютера.
Как определить локальные установки компьютера. Если вы пишите программы на VB и ими пользуются как у нас в стране, так и за рубежом, то очень приятно, когда программа автоматически меняет все надписи в зависимости от привычного языка пользователя. Или хотя бы переходит на латиницу, если нет кириллицы(в нелокализованных версиях ОС). Это возможно, если программа умет определить локальные настройки компьютера, на котором она запущена. Вот пример простого кода программы, с помощью которого можно определить страну, язык, денежный формат и формат написания дней недели компьютера. Добавляем к проекту bas модуль: Public Const LOCALE_USER_DEFAULT = &H400 Public Const LOCALE_SENGLANGUAGE = &H1001 Public Const LOCALE_SENGCOUNTRY = &H1002 Public Const LOCALE_SCURRENCY = &H14 Public Const LOCALE_SLONGDATE = &H20 Public Const LOCALE_SDAYNAME1 = &H2A 'long name for Monday(полные названия дней недели) Public Const LOCALE_SDAYNAME2 = &H2B 'long name for Tuesday Public Const LOCALE_SDAYNAME3 = &H2C 'long name for Wednesday Public Const LOCALE_SDAYNAME4 = &H2D 'long name for Thursday Public Const LOCALE_SDAYNAME5 = &H2E 'long name for Friday Public Const LOCALE_SDAYNAME6 = &H2F 'long name for Saturday Public Const LOCALE_SDAYNAME7 = &H30 'long name for Sunday Public Const LOCALE_SABBREVDAYNAME1 = &H31 'short name for Monday(короткие названия дней недели) Public Const LOCALE_SABBREVDAYNAME2 = &H32 'short name for Tuesday Public Const LOCALE_SABBREVDAYNAME3 = &H33 'short name for Wednesday Public Const LOCALE_SABBREVDAYNAME4 = &H34 'short name for Thursday Public Const LOCALE_SABBREVDAYNAME5 = &H35 'short name for Friday Public Const LOCALE_SABBREVDAYNAME6 = &H36 'short name for Saturday Public Const LOCALE_SABBREVDAYNAME7 = &H37 'short name for Sunday 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 Далее на форме размещаем CommandButtion и пишем код: Private Sub Command1_Click() Dim buffer As String * 100 Dim dl& Form1.Cls dl& = GetLocaleInfo(LOCALE_USER_DEFAULT, _ LOCALE_SENGLANGUAGE, buffer, 99) Print " Язык: " & LPSTRToVBString(buffer) dl& = GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SENGCOUNTRY, buffer, 99) Print " Страна: " & LPSTRToVBString(buffer) dl& = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SCURRENCY, buffer, 99) Print " Денежный символ: " & LPSTRToVBString(buffer) dl& = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, buffer, 99) Print " Формат даты: " & LPSTRToVBString(buffer) 'Можно изменить 'LOCALE_SDAYNAME3' на другую константу, 'которые описаны в модуле. dl& = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDAYNAME3, buffer, 99) Print " Полное название дня недели: " & LPSTRToVBString(buffer) 'Можно изменить 'LOCALE_SABBREVDAYNAME3' на другую константу, 'их список есть в модуле. dl& = GetLocaleInfo(LOCALE_USER_DEFAULT, _ LOCALE_SABBREVDAYNAME3, buffer, 99) Print " Короткое название дня недели: " & LPSTRToVBString(buffer) End Sub Код этой функции разместите в любом месте: Private Function LPSTRToVBString$(ByVal s$) Dim nullpos& nullpos& = InStr(s$, Chr$(0)) If nullpos > 0 Then LPSTRToVBString = Left$(s$, nullpos - 1) Else LPSTRToVBString = "" End If End Function Теперь, при нажатии на кнопку, на форме отобразиться вся информация по локальным настройкам компьютера, которую можно успешно использовать в своих программах. Виталий. |