PDA

Click to See Complete Forum and Search --> : RegOpenKey(Ex)


May 1st, 2000, 02:16 AM
Can anyone help me?
I am trying to pull out system date format from the registry using API function calls, but can't even open key. I keep getting 161 error code (MessageId: ERROR_BAD_PATHNAME, MessageText:The specified path is invalid.)

I am using the following code:

Public fMainForm As frmMain
Public sDataPath As String
Public sDateFormat As String

Public Const HKEY_CURRENT_USER = &H80000001
Const KEY_QUERY_VALUE = &H1
Const REG_SZ = 1

Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias _
"RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
ByVal ulOptions As Long, ByVal samDesired As Long, _
phkResult As Long) As Long
Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias _
"RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
ByVal lpReserved As Long, lpType As Long, _
lpData As Any, lpcbData As Long) As Long
Public Declare Function RegCloseKey Lib "advapi32.dll" _
(ByVal hKey As Long) As Long

'let's retrieve the system date
Public Sub GetKey() 'As String

Dim sRegistryKey As String
Dim nHKResult As Long
Dim nErrKey As Long
Dim sRtrnData As String
Dim nRtrnSize As Long

sRegistryKey = "\Control Panel\International"
'open the key
nErrKey = RegOpenKeyEx(HKEY_CURRENT_USER, sRegistryKey, 0&, _
KEY_QUERY_VALUE, nHKResult)
'retrieve value
nErrKey = RegQueryValueEx(HKEY_CURRENT_USER, "sShortDate", _
0&, REG_SZ, ByVal sRtrnData, nRtrnSize)

'close the key
nOpenRegKey = RegCloseKey(nHKResult)

End Sub

Serge
May 1st, 2000, 04:56 AM
You can use GetLocaleInfo to get date formats:

Option Explicit
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 Long
Private Const LOCALE_USER_DEFAULT = &H400
Private Const LOCALE_SSHORTDATE = &H1F ' short date format string
Private Const LOCALE_SLONGDATE = &H20 ' long date format string


Private Sub Form_Load()
Dim strLocale As String
Dim lngRet As Long
Dim strMsg As String

'Get short date format
strLocale = Space(255)
lngRet = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, strLocale, Len(strLocale))
strLocale = Left(strLocale, lngRet - 1)

strMsg = "Short Date Format: " & strLocale

'Get long date format
strLocale = Space(255)
lngRet = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, strLocale, Len(strLocale))
strLocale = Left(strLocale, lngRet - 1)

strMsg = strMsg & vbCrLf & "Long Date Format: " & strLocale

MsgBox strMsg
End Sub