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 Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As LongPrivate Sub setdateformat() Dim dwLCID As Long, i As Long Dim lpLCData As String * 255, cchData cchData = Len(lpLCData) dwLCID = GetSystemDefaultLCID() i = SetLocaleInfo(dwLCID, LOCALE_SSHORTDATE, "yyyy-MM-dd") '设置短日期格式 PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 i = SetLocaleInfo(dwLCID, 32, "yyyy-MM-dd") '设置长日期格式 PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 i = SetLocaleInfo(dwLCID, LOCALE_STIMEFORMAT, "HH:mm:ss") '设置时间格式 PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 End SubPrivate Sub Form_Load() Call setdateformat End Sub
//搂上的我试过了。只有设置长日期格式是对的。短日期格式和时间格式没有变化。呵呵:) 怎么试的?你的vb设置了强制变量声明没有?你的程序中下面这些常数声明了没有: Private Const LOCALE_SLONGDATE = &H20 ' long date format string Private Const LOCALE_SSHORTDATE = &H1F ' short date format string Private Const LOCALE_STIMEFORMAT = &H1003 ' time format string
时间格式设置
Shell "rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3"
日期格式设置
Shell "rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4"方法二:VB使用Register 的API或Vb中引用Register type library修改注册表
HKEY_USERS\.DEFAULT\Control Panel\International\sShortDate
HKEY_USERS\.DEFAULT\Control Panel\International\sTimeFormat
免费的学习交流网站,欢迎大家访问!
http://www.j2soft.cn/
http://j2soft.008.net/
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 Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As LongPrivate Sub setdateformat()
Dim dwLCID As Long, i As Long
Dim lpLCData As String * 255, cchData
cchData = Len(lpLCData)
dwLCID = GetSystemDefaultLCID()
i = SetLocaleInfo(dwLCID, LOCALE_SSHORTDATE, "yyyy-MM-dd") '设置短日期格式
PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0
i = SetLocaleInfo(dwLCID, 32, "yyyy-MM-dd") '设置长日期格式
PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0
i = SetLocaleInfo(dwLCID, LOCALE_STIMEFORMAT, "HH:mm:ss") '设置时间格式
PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0
End SubPrivate Sub Form_Load()
Call setdateformat
End Sub
HKEY_USERS\.DEFAULT\Control Panel\International\sTimeFormat楼主可以打开注册表中的上述位置看看就明白了,然后用vb读写注册表就好了。
Private Const LOCALE_SLONGDATE = &H20 ' long date format string
Private Const LOCALE_SSHORTDATE = &H1F ' short date format string
Private Const LOCALE_STIMEFORMAT = &H1003 ' time format string