08/01 所介绍的方法, 在设置日期之后, 必须等到下次开机才生效, 如果要立即生效, 必须调用 SetLocaleInfo API 函数, 如下:
1. API 的宣告:
Const LOCALE_SLONGDATE = &H20
Const LOCALE_SSHORTDATE = &H1F
Const LOCALE_STIME = &H1E
Private Declare Function GetSystemDefaultLCID Lib "kernel32"
() As Long
Private Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA"
(ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String)
As Long
注:如果以上的定义放在「一般模组」底下, 应将 Private 保留字去掉, 并且在 Const 之前加上 Public 保留字。
2. 调用例:
Dim lcid As Long
lcid = GetSystemDefaultLCID
SetLocaleInfo lcid, LOCALE_SSHORTDATE, "yy/m/d"
' 短日期格式
SetLocaleInfo lcid, LOCALE_SLONGDATE, "MMMM
dd yyyy" ' 长日期格式
SetLocaleInfo lcid, LOCALE_STIME, "tt
hh: mm: ss" ' 时间格式
以上的红色部分请改成您要设置的格式。
08/01 公布的解决方案
如果使用「控制面板」, 则改变系统默认的日期格式, 是启动「控制面板」的「区域」, 然后进行设置, 但如果不使用「控制面板」, VB 程序如何改变系统默认的日期格式呢?
方法是改变登录数据库的以下内容:
HKEY_CURRENT_USER\Control Panel\International\sLongDate (长日期格式)
HKEY_CURRENT_USER\Control Panel\International\sShortDate (短日期格式)
HKEY_CURRENT_USER\Control Panel\International\sTimeFormat (时间格式)
注:在程序中改变登录数据库的方法, 则请参阅 Run!PC 50 期(3 月号)「Windows 的登录数据库」。