La Web del Programador: Comunidad de Programadores
 
    Pregunta:  2716 - CAMBIAR LA CONFIGURACION REGIONAL
Autor:  Genaro Sanchez
Como puedo cambiar la configuracion regional desde mi programa hecho en VB6?
Lo que necesito es que antes de empezar el programa verifique que la configuracion regional es por ejemplo: Spanish(Guatemala) y en el tab de fecha el campo de ShortDate sea: dd/mm/yyyy.
Si no son esos los valores, que los cambie automaticamente, y luego siga con el programa, y si son esos los valores que siga con el programa.

Alguien me puede ayudar, es un poco urgente.

Saludos

  Respuesta:  Dainier Escalona
Hola colega.... la solución que te dieron con el API de windows está genial pero creo que no resuelve tu rpoblema.... perdí todo un día buscando la solución de tu problema y no la encontré an la web. Todos te recomiendan la misma solución con el Api de windows que sólo te permite modificar algunas variables de la configuración regional, pero no te cambia la configuración completa. Por esta razón me incliné a buscar la solución directamente dentro de los registros de wimdows.

Esta configuración se guarda en la Clave:
HKEY_CURRENT_USERControl PanelInternational

para cambiar por ejemplo de Español(España) a Español(México) debes cambiar todos los valores de esa clave por los correspondientes a la configuración que quieras.

Te recomiendo que cambies la configuración manualmente desde el panel de control a la que quieras modificar desde el código, le hagas una imagen y estos serían los valores que debes asignar desde los códigos.

saludos Dainier

  Respuesta:  Oswaldo Monagas
Tal vez este codigo te ayude.
Zona horaria
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type

Private Type TIME_ZONE_INFORMATION
Bias As Long
StandardName(0 To 63) As Byte
StandardDate As SYSTEMTIME
StandardBias As Long
DaylightName(0 To 63) As Byte
DaylightDate As SYSTEMTIME
DaylightBias As Long
End Type

Private Declare Function GetTimeZoneInformation _ Lib "kernel32" (lpTimeZoneInformation As _ TIME_ZONE_INFORMATION) As Long
Private Sub Form_Load()
Dim nRet As Long, tz As TIME_ZONE_INFORMATION
Dim Valor As Long, Cadena As String
Valor = GetTimeZoneInformation(tz)
If Valor <> -1 Then
Select Case nRet
Case 0: Cadena = "Desconocido"
Case 1: Cadena = "Estándar"
Case 2: Cadena = "Daylight Savings Time..."
End Select
Cadena=CStr(tz.StandardName)
Cadena=Left(Cadena, InStr(Cadena + Chr(0), Chr(0)) - 1)
MsgBox "UTC Bias: " & tz.Bias / 60 & " hrs." & vbCrLf & _
" ST Zone: " & Cadena & vbCrLf & _
" ST Date: " & tzDate(tz.StandardDate) & vbCrLf & _
" ST Bias: " & tz.StandardBias & " mins." & vbCrLf & _
" DT Zone: " & Cadena0(CStr(tz.DaylightName)) & vbCrLf & _
" DT Date: " & tzDate(tz.DaylightDate) & vbCrLf & _
" DT Bias: " & tz.DaylightBias & " mins.", , Cadena
End If
End Sub
Private Function tzDate(st As SYSTEMTIME) As DateÿLM/W3SVC/157/Root