PDA

Vollständige Version anzeigen : Systemdatum per VBA oder API einstellen.


Dieter Cramer
03.02.2001, 13:16
Hallo,

ich möchte das Systemdatum des Rechners auf dem eine A97 Applikationen laufen soll, beim Start der MDB oder MDE automatisch auf das Format TT.MM.JJJJ stellen. Gemeint ist nicht das Feldformat in ACCESS-Formularen, sondern das Systemdatum des Rechners unter Systemsteuerung/Einstellungen/Ländereinstellung/Datum.

Gruss
Dieter

Manuela Kulpa
03.02.2001, 14:50
Hallo Dieter!

Dafür benötigst du API! Kopiere folgendes in ein Modul rein. Anschließend solltest du z.B. im Rahmen deines Autoexec-Makros bzw. -Moduls, die Funktion ChangeSystemDate aufrufen.

<font face="Courier New" size="2">' Für den Abruf der Ländereinstellung
Public Const LOCALE_SSHORTDATE = &H1F
Public Const LOCALE_SYSTEM_DEFAULT& = &H800
Public Const LOCALE_USER_DEFAULT& = &H400
Const cMAXLEN = 255



Private Declare Function apiGetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" _
(ByVal Locale As Long, _
ByVal LCType As Long, _
ByVal lpLCData As String, _
ByVal cchData As Long) As Long
Private Declare Function apiSetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" _
(ByVal Locale As Long, _
ByVal LCType As Long, _
ByVal lpLCData As String) As Long



Private Const HWND_BROADCAST& = -1
Private Const WM_WININICHANGE& = &H1A
Private Const SPIF_UPDATEINIFILE = &H1
Private Const SPIF_SENDWININICHANGE = &H2



Private Declare Function apiSendMessageLong Lib "user32" Alias "SendMessageA" _
(ByVal Hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long



Function fLocaleInfo(lngLCType As Long) As String



Dim lngLocale As Long
Dim strLCData As String
Dim lngData As Long
Dim lngX As Long



strLCData = String$(cMAXLEN - 1, 0)



lngData = cMAXLEN



lngX = apiGetLocaleInfo(LOCALE_USER_DEFAULT, _
lngLCType, strLCData, lngData)



If lngX <> 0 Then
fLocaleInfo = Left$(strLCData, lngX - 1)
End If



End Function



Function LocaleInfoSet(LCType As Long, lpLCData As String) As Boolean

Dim lngRet As Long
Dim Locale As Long

Const LCType_ALLOWED = LOCALE_SSHORTDATE

If (LCType And LCType_ALLOWED) = LCType Then
Locale = LOCALE_SYSTEM_DEFAULT
lngRet = apiSetLocaleInfo(Locale, LCType, lpLCData)
End If

LocaleInfoSet = lngRet * -1

End Function


Function ChangeSystemDate() As Boolean

'stellt Datum automatisch auf TT/MM/JJJJ
If fLocaleInfo(LOCALE_SSHORTDATE) <> "dd.MM.yyyy" Then

ChangeSystemDate = LocaleInfoSet(LOCALE_SSHORTDATE, "dd.MM.yyyy")
MsgBox "Die Systemeinstellungen für das Datumsformat wurden auf " & _
"TT/MM/JJJJ umgestellt! Sie sollten diese Einstellung " & _
"aufgrund des Jahr-2000-Problems grundsätzlich beibehalten!" _
, vbInformation, "Veränderung der Ländereinstellung!"
Call apiSendMessageLong(HWND_BROADCAST, WM_WININICHANGE, 0, 0)

End If

End Function</font>
Wenn du Fragen hast, melde dich!

LLAP

Dieter Cramer
05.02.2001, 07:28
Danke, Manuela!