Hello,
> Does anybody know how I can read Registry Values from a MapBasic
> Application?
You have to declare API functions and constants:
Declare Function RegOpenKey Lib "ADVAPI32.DLL" Alias "RegOpenKeyA" (ByVal hKey As
Integer, ByVal SubKey As String, pResult As
Integer) As Integer
Declare Function RegCreateKey Lib "ADVAPI32.DLL" Alias "RegCreateKeyA" (ByVal hKey As
Integer, ByVal SubKey As String, pResult As
Integer) As Integer
Declare Function RegCloseKey Lib "ADVAPI32.DLL" (ByVal hKey As Integer) As Integer
Declare Function RegQueryValueEx Lib "ADVAPI32.DLL" Alias "RegQueryValueExA" (ByVal
hKey As Integer, ByVal ValueName As String,
ByVal Res1 As Integer, EntryType As Integer, EntryVal As String, lpcbData As Integer)
As Integer
Declare Function RegQueryNumberEx Lib "ADVAPI32.DLL" Alias "RegQueryValueExA" (ByVal
hKey As Integer, ByVal ValueName As String,
ByVal Res1 As Integer, EntryType As Integer, NumVal As Integer, lpcbData As Integer)
As Integer
Declare Function RegQueryValueType Lib "ADVAPI32.DLL" Alias "RegQueryValueExA" (ByVal
hKey As Integer, ByVal ValueName As String,
ByVal Res1 As Integer, EntryType As Integer, ByVal EntryVal As Integer, lpcbData As
Integer) As Integer
Declare Function RegSetValueEx Lib "ADVAPI32.DLL" Alias "RegSetValueExA" (ByVal hKey
As Integer, ByVal ValueName As String, ByVal
Res1 As Integer, ByVal EntryType As Integer, ByVal EntryVal As String, ByVal lpcbData
As Integer) As Integer
Declare Function RegSetNumberEx Lib "ADVAPI32.DLL" Alias "RegSetValueExA" (ByVal hKey
As Integer, ByVal ValueName As String, ByVal
Res1 As Integer, ByVal EntryType As Integer, EntryVal As Integer, ByVal lpcbData As
Integer) As Integer
Possible values for EntryType parameter:
Define REG_SZ 1
Define REG_DWORD 4
Values for root keys:
Define HKEY_CLASSES_ROOT -2147483648
Define HKEY_CURRENT_USER -2147483647
Define HKEY_LOCAL_MACHINE -2147483646
Define HKEY_USERS -2147483645
Define HKEY_PERFORMANCE_DATA -2147483644
Define HKEY_PERFORMANCE_TEXT -2147483568
Define HKEY_PERFORMANCE_NLSTEXT -2147483552
Examples of functions usage:
Function GetRegistryString(ByVal hKey As Integer, ByVal sEntry As String) As String
Dim EntryType, EntryLen As Integer, EntryVal As String
Dim NumVal As Integer
If RegQueryValueType(hKey, sEntry, 0, EntryType, 0, EntryLen) <> 0 Then
Goto HandleError
End If
Do Case EntryType
Case REG_SZ
EntryVal = Str$(EntryLen+1)
If RegQueryValueEx(hKey, sEntry, 0, EntryType, EntryVal, EntryLen) <> 0 Then
Goto HandleError
End If
EntryVal = RTrim$(EntryVal)
GetRegistryString = EntryVal
Case REG_DWORD
If RegQueryNumberEx(hKey, sEntry, 0, EntryType, NumVal, EntryLen) <> 0 Then
Goto HandleError
End If
GetRegistryString = Str$(NumVal)
Case Else
Goto HandleError
End Case
Exit Function
HandleError:
GetRegistryString = ""
End Function
Sub SetRegistryString(ByVal hKey As Integer, ByVal sEntry As String, ByVal
sEntryString As String)
Dim r As Integer
r = RegSetValueEx(hKey, sEntry, 0, REG_SZ, sEntryString, Len(sEntryString) + 1)
End Sub
Sub SetRegistryInt(ByVal hKey As Integer, ByVal sEntry As String, ByVal iEntryInt As
Integer)
Dim r As Integer
r = RegSetNumberEx(hKey, sEntry, 0, REG_DWORD, iEntryInt, 4)
End Sub
You get value of hKey by calling:
Dim hMyKey As Integer
If RegOpenKey(HKEY_CURRENT_USER, "Software\Microsoft\Windows Help", hMyKey) <> 0 Then
' take some actions on failure
End If
Please let me know if anything is unclear in my description.
Dmitry
Dmitry Bogdanov
GIS Department Manager
Kiev Software Factory Ltd.
room 46 9/12 Baumana St, Kiev, Ukraine 252190
Tel: (380 44) 442-6077; (380 44) 443-7925
Fax: (380 44) 443-7925
Internet: http://www.ksf.kiev.ua
----------------------------------------------------------------------
To unsubscribe from this list, send e-mail to [EMAIL PROTECTED] and put
"unsubscribe MAPINFO-L" in the message body, or contact [EMAIL PROTECTED]