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