去看看这个帖子
http://www.csdn.net/expert/topic/283/283068.shtm

解决方案 »

  1.   

    不用那么麻烦,
    有专门的API
    Private Declare Function SetLocaleInfo Lib "kernel32" Alias _
            "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As _
              Long, ByVal lpLCData As String) As Boolean
    Private Declare Function PostMessage Lib "user32" Alias _
              "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
              ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Declare Function GetSystemDefaultLCID Lib "kernel32" _
              () As LongPrivate Const LOCALE_SSHORTDATE = &H1F
    Private Const WM_SETTINGCHANGE = &H1A
          'same as the old WM_WININICHANGE
    Private Const HWND_BROADCAST = &HFFFF&Private Sub cmdSetLong_Click()
        Dim dwLCID As Long
        
        dwLCID = GetSystemDefaultLCID()
        If SetLocaleInfo(dwLCID, LOCALE_SSHORTDATE, "yyyy-MM-dd") = False Then
            MsgBox "Failed"
            Exit Sub
        End If
        PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0
    End Sub