Obtener formato de fecha corta de las opciones regionales del sistema

Sol
25 de Abril del 2003
Necesitaba saber como puedo obtener el formato de fecha corta (no la fecha) que se establece en las opciones regionales del sistema a traves de vb6

SuSoft
25 de Abril del 2003
No entiendo muy bien la pregunta pero para dar formato a una fecha es :
FechaHoy = format(date,"dd/mm/yyyy") ' Fecha Larga
FechaHoy = format(date,"dd/mm/yy") 'Fecha Corta

jorge
25 de Abril del 2003
Debes de utilizar la funcion GetLocaleInfo para recuperar la información. Acontinuación, te pongo un ejemplo sacado del AllApi.net

Const LOCALE_USER_DEFAULT = &H400
Const LOCALE_SENGCOUNTRY = &H1002 ' English name of country
Const LOCALE_SENGLANGUAGE = &H1001 ' English name of language
Const LOCALE_SNATIVELANGNAME = &H4 ' native name of language
Const LOCALE_SNATIVECTRYNAME = &H8 ' native name of country
Private 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
Private Sub Form_Load()
'KPD-Team 2001
'URL: http://www.allapi.net/
'E-Mail: [email protected]
MsgBox "You live in " & GetInfo(LOCALE_SENGCOUNTRY) & " (" & GetInfo(LOCALE_SNATIVECTRYNAME) & ")," & vbCrLf & "and you speak " & 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


Tambien existe otra forma de acceder a la información regional, que es directamente a través del registro. Las variables regionales se encuentran en "HKEY_CURRENT_USERControl PanelInternational".

Si lo que vas es a cambiar alguna configuración, puedes hacerlo a través de SetLocaleInfo o a través del registro, pero no debes olvidar comunicarlo al sistema para cada una de las modificaciones que hagas. Esto lo debes de hacer a tráves de PostMessage

Declaración:
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long



'Constantes de locale
Public Const HWND_BROADCAST = &HFFFF&
Public Const WM_WININICHANGE = &H1A
Public Const WM_SETTINGCHANGE = WM_WININICHANGE
Public Const LOCALE_SDECIMAL = &HE
Public Const LOCALE_STHOUSAND = &HF
Public Const LOCALE_SMONDECIMALSEP = &H16
Public Const LOCALE_SMONTHOUSANDSEP = &H17
Public Const LOCALE_STIMEFORMAT = &H1003
Public Const LOCALE_STIME = &H1E
Public Const LOCALE_SSHORTDATE = &H1F
Public Const LOCALE_SDATE = &H1D
Ejemplo:
Call PostMessage(HWND_BROADCAST,WM_SETTINGCHANGE, 0&, ByVal 0&)