Modul zum arbeiten mit der Windows Registrierung

MOin,
Anno war mal so freundlich ein Modul zum arbeiten mit der REgistrierung bereitzustellen. Wenn ich den Code aber in ein Modul kopiere gibt es eine Fehlermeldung:
User defined typ nicht defined:
Public Function SetValue(Key As String, Field As String, vData As Variant, Typ As RegistryData) As Boolean
Warum ?

UND WO IST ANNO ÜBERHAUPT ???

mfg jonny

Option Explicit

Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private 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
Private 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 Any, ByVal cbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long

Private Const REG\_SZ = 1
Private Const REG\_BINARY = 3
Private Const REG\_DWORD = 4

Public Function SetValue(Key As String, Field As String, vData As Variant, Typ As RegistryData) As Boolean
On Error GoTo ErrHandler
 Dim tmp As String
 Dim tmp1 As Byte
 Dim tmp2 As Long
 Select Case Typ
 Case 1 'Byte
 tmp1 = CByte(vData)
 SetValue = StringSpeichernByte(HKEY\_CURRENT\_USER, Key, Field, CStr(tmp1))
 Case 2 'DWORD
 tmp2 = CLng(vData)
 SetValue = StringSpeichernLong(HKEY\_CURRENT\_USER, Key, Field, tmp2)
 Case 3 'STRING
 tmp = CStr(vData)
 SetValue = StringSpeichern(HKEY\_CURRENT\_USER, Key, Field, tmp)
 End Select
ErrHandler:
End Function

Private Function StringSpeichern(hKey As Long, sPath As String, sValue As String, iData As String) As Boolean
On Error GoTo ErrHandler
Dim vRet As Variant
 RegCreateKey hKey, sPath, vRet
 RegSetValueEx vRet, sValue, 0, REG\_SZ, ByVal iData, Len(iData)
 RegCloseKey vRet
 StringSpeichern = True
ErrHandler:
End Function

Private Function StringSpeichernByte(hKey As Long, sPath As String, sValue As String, iData As String) As Boolean
On Error GoTo ErrHandler
Dim vRet As Variant
 RegCreateKey hKey, sPath, vRet
 RegSetValueEx vRet, sValue, 0, REG\_BINARY, CByte(iData), 4
 RegCloseKey vRet
 StringSpeichernByte = True
ErrHandler:
End Function

Private Function StringSpeichernLong(hKey As Long, sPath As String, sValue As String, iData As Long) As Boolean
On Error GoTo ErrHandler
Dim vRet As Variant
Dim lResult As Long
 RegCreateKey hKey, sPath, vRet
 lResult = RegSetValueEx(vRet, sValue, 0, REG\_DWORD, iData, 4)
 RegCloseKey vRet
 StringSpeichernLong = True
ErrHandler:
End Function

Public Function WertLesen(hKey As Long, sPath As String, sValue As Variant, Default As Variant) As Boolean
On Error GoTo ErrHandler
Dim vRet As Variant
 RegOpenKey hKey, sPath, vRet
 sValue = fRegAbfrageWert(vRet, CStr(sValue))
 If IsEmpty(sValue) Then sValue = Default
 RegCloseKey vRet
 WertLesen = True
ErrHandler:
End Function

Private Function fRegAbfrageWert(ByVal hKey As Long, ByVal sValueName As String) As Variant
On Error GoTo ErrHandler
Dim sBuffer As String
Dim lRes As Long
Dim lTypeValue As Long
Dim lBufferSizeData As Long
Dim iData As Integer
Dim LongData As Long
 lRes = RegQueryValueEx(hKey, sValueName, 0, lTypeValue, ByVal 0, lBufferSizeData)
 If lRes = 0 Then
 If lTypeValue = REG\_SZ Then
 sBuffer = String(lBufferSizeData, Chr$(0))
 lRes = RegQueryValueEx(hKey, sValueName, 0, 0, ByVal sBuffer, lBufferSizeData)
 If lRes = 0 Then fRegAbfrageWert = Left$(sBuffer, InStr(1, sBuffer, Chr$(0)) - 1)
 ElseIf lTypeValue = REG\_BINARY Then
 lRes = RegQueryValueEx(hKey, sValueName, 0, 0, iData, lBufferSizeData)
 If lRes = 0 Then fRegAbfrageWert = iData
 ElseIf lTypeValue = REG\_DWORD Then
 lBufferSizeData = 4
 lRes = RegQueryValueEx(hKey, sValueName, 0&, REG\_DWORD, LongData, lBufferSizeData)
 If lRes = 0 Then fRegAbfrageWert = LongData
 End If
 End If
 Exit Function
ErrHandler:
 fRegAbfrageWert = ""
End Function

Public Function WerteLoeschen(sPath As String, sValue As String) As Boolean
On Error GoTo ErrHandler
Dim vRet As Variant
 RegCreateKey HKEY\_CURRENT\_USER, sPath, vRet
 RegDeleteValue vRet, sValue
 RegCloseKey vRet
 WerteLoeschen = True
ErrHandler:
End Function

Public Function DeleteAutoRun(sValueName As String) As Boolean
On Error GoTo ErrHandler
Dim hKey As Long
 RegOpenKey HKEY\_CURRENT\_USER, "software\microsoft\windows\currentversion\run", hKey
 RegDeleteValue hKey, sValueName
 RegCloseKey hKey
 DeleteAutoRun = True
ErrHandler:
End Function

Public Function DeleteAutoRunOnce(sValueName As String) As Boolean
On Error GoTo ErrHandler
Dim hKey As Long
 RegOpenKey HKEY\_CURRENT\_USER, "software\microsoft\windows\currentversion\runonce", hKey
 RegDeleteValue hKey, sValueName
 RegCloseKey hKey
 DeleteAutoRunOnce = True
ErrHandler:
End Function

Public Function SetAutoRun(sValueName As String, sValue As String) As Boolean
On Error GoTo ErrHandler
Dim hKey As Long
 RegOpenKey HKEY\_CURRENT\_USER, "software\microsoft\windows\currentversion\run", hKey
 RegSetValueEx hKey, sValueName, 0, REG\_SZ, ByVal sValue, Len(sValue)
 RegCloseKey hKey
 SetAutoRun = True
ErrHandler:
End Function

Public Function SetAutoRunOnce(sValueName As String, sValue As String) As Boolean
On Error GoTo ErrHandler
Dim hKey As Long
 RegOpenKey HKEY\_CURRENT\_USER, "software\microsoft\windows\currentversion\runonce", hKey
 RegSetValueEx hKey, sValueName, 0, REG\_SZ, ByVal sValue, Len(sValue)
 RegCloseKey hKey
 SetAutoRunOnce = True
ErrHandler:
End Function

Public Function DeleteKey(Key As String) As Boolean
On Error GoTo ErrHandler
Dim lReturn As Long
lReturn = RegDeleteKey(HKEY\_CURRENT\_USER, Key)
DeleteKey = CBool(lReturn = 0)
ErrHandler:
End Function

Moin, Joe!

Anno war mal so freundlich ein Modul zum arbeiten mit der
REgistrierung bereitzustellen. Wenn ich den Code aber in ein
Modul kopiere gibt es eine Fehlermeldung:
User defined typ nicht defined:
Public Function SetValue(Key As String, Field As String, vData
As Variant, Typ As RegistryData) As Boolean

Liegt am „Typ As RegistryData“. Irgendwo musst Du diesen Typ herkriegen. Ich weiß aber nicht, in welchem einzubindenden Verweis das Ding steckt. Ich glaube aber, dass sind eh nur Integer-Konstanten, also kannst Du auch einfach statt „Typ As RegistryData“ „Typ As Long“ schreiben. Nähere Infos auch unter http://msdn.microsoft.com/en-us/library/bb773476(VS…

Gruß, Manfred