'use the Registry
'on a Module
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey as
Long) as
Long
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
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
Declare Function RegCreateKeyEx Lib "advapi32.dll" alias
"RegCreateKeyExA" (ByVal hKey as
Long, ByVal lpSubKey as
String, ByVal Reserved as
Long, ByVal lpClass as
String, ByVal dwOptions as
Long, ByVal samDesired as
Long, lpSecurityAttributes as
Long, phkResult as
Long, lpdwDisposition as
Long) as
Long
Declare Function RegCreateKey Lib "advapi32.dll" alias
"RegCreateKeyExA" (ByVal hKey as
Long, ByVal lpSubKey as
String, ByVal Reserved as
Long, ByVal lpClass as
String, ByVal dwOptions as
Long, ByVal samDesired as
Long, lpSecurityAttributes as
Long, phkResult as
Long, lpdwDisposition as
Long) as
Long
Declare Function RegSetValueEx Lib "advapi32.dll" alias
"RegSetValueExA" (ByVal hKey as
Long, ByVal lpValueName as
String, ByVal Reserved as
Long, ByVal dwType as
Long, lpData as
Byte, ByVal cbData as
Long) as
Long
Declare Function RegSetValueExString Lib "advapi32.dll" alias
"RegSetValueExA" (ByVal hKey as
Long, ByVal lpValueName as
String, ByVal Reserved as
Long, ByVal dwType as
Long, ByVal lpValue as
String, ByVal cbData as
Long) as
Long
Declare Function RegSetValueExLong Lib "advapi32.dll" alias
"RegSetValueExA" (ByVal hKey as
Long, ByVal lpValueName as
String, ByVal Reserved as
Long, ByVal dwType as
Long, lpValue as
Long, ByVal cbData as
Long) as
Long
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_DYN_DATA = &H80000006
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Const HKEY_USERS = &H80000003
Public Const ERROR_SUCCESS = 0&
Const REG_OPTION_NON_VOLATILE = &O0
Const KEY_ALL_CLASSES as
long
= &HF0063
Const KEY_ALL_ACCESS = &H3F
Const REG_SZ as
long
= 1
'KeyName$ is youre own key in the Registry
Public Const KeyName$ = "Software\KATHER\"
Public sub
SchrijfInstelling(SName$, KName$, vInstelling$)
dim
hNewKey as
Long
dim
lRetVal as
Long
'make key under HKEY_CURRENT_USER\Software\KATHER\applicationname\SName$
lRetVal = RegCreateKeyEx(&H80000001, KeyName & App.EXEName & "\" & SName$, 0&, vbNullString, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0&, hNewKey, lRetVal)
'add avlue
lRetVal = SetValueEx(hNewKey, KName$, REG_SZ, vInstelling$)
RegCloseKey (hNewKey)
End Sub
Public Function LeesInstelling(SName$, KName$) as
String
LeesInstelling = RegGetString$(&H80000001, KeyName$ & App.EXEName & "\" & SName$, KName$)
End Function
Public Function RegGetString$(hInKey as
Long, ByVal subkey$, ByVal valname$)
dim
RetVal$, hSubKey as
Long, dwType as
Long, SZ as
Long, v$, r as
Long
RetVal$ = ""
r = RegOpenKeyEx(hInKey, subkey$, 0, KEY_ALL_CLASSES, hSubKey)
If r <> ERROR_SUCCESS Then GoTo Quit_Now
SZ = 256: v$ = String$(SZ, 0)
r = RegQueryValueEx(hSubKey, valname$, 0, dwType, ByVal v$, SZ)
If r = ERROR_SUCCESS And dwType = REG_SZ Then
RetVal$ = Left(v$, SZ - 1)
Else
RetVal$ = ""
end
If
If hInKey = 0 Then r = RegCloseKey(hSubKey)
Quit_Now:
RegGetString$ = RetVal$
End Function
Public Function SetValueEx(ByVal hKey as
Long, sValueName as
String, lType as
Long, vValue as
Variant) as
Long
SetValueEx = RegSetValueExString(hKey, sValueName, 0&, lType, vValue, Len(vValue))
End Function
'Use as:
Dim name$
Const = VSector$ = "options"
'reading
name$ = LeesInstelling(vSector$,"name")
'writing
Call SchrijfInstelling(VSector$,"name",name$)
'give the value off vKey$ and the settings in LeesInstelling and SchrijfInstelling
'the entry in the Registry will be:
'HKEY_CURRENT_USER\Software\KATHER\[applicationname]\options\name
Return