如何保证程序运行时系统的日期格式不能被修改

解决方案 »

  1.   

    加Timer判断,如果日期格式已改变则用下面代码恢复你想要的格式
    '设置系统的日期格式(CSDN:of123提供)
    Private Const LOCALE_SSHORTDATE = &H1F
          Private Const WM_SETTINGCHANGE = &H1A
          Private Const HWND_BROADCAST = &HFFFF&
          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 Long      Private Sub Command1_Click()
             Dim dwLCID As Long
             dwLCID = GetSystemDefaultLCID()
             If SetLocaleInfo(dwLCID, LOCALE_SSHORTDATE, "yyyy-MM-dd") = True Then
                MsgBox "True"
                Exit Sub
             End If
             PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0
          End Sub
    建议程序用Format(日期,"yyyy-mm-dd")获得你想要的日期格式。
      

  2.   

    抱歉,上面If SetLocaleInfo(dwLCID, LOCALE_SSHORTDATE, "yyyy-MM-dd") = True Then
                MsgBox "True"应改为
    If SetLocaleInfo(dwLCID, LOCALE_SSHORTDATE, "yyyy-MM-dd") = False Then
                MsgBox "False"