Public Function GetSubFolder() As String
Dim lRet As Long
Dim ldwIndex As Long
Dim lhKey As Long
Dim lcbName As Long
Dim lTmp As Long
Dim sBuffer As String
Dim sKey As String
sKey = "SOFTWARE\Electronic Arts\EA Games"
lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sKey, 0, KEY_ALL_ACCESS, lhKey)
If (lRet <> ERROR_SUCCESS) Then GoTo ErrHandle
Begin:
sBuffer = String$(1024, 0)
lcbName = Len(sBuffer)
lRet = RegEnumKey(lhKey, ldwIndex, sBuffer, lcbName)
lTmp = InStr(sBuffer, Chr$(0))
If lTmp <> 0 Then
sBuffer = Left$(sBuffer, lTmp - 1)
If sBuffer <> "" Then
GetSubFolder = GetSubFolder & sBuffer & Chr(0)
ldwIndex = ldwIndex + 1
GoTo Begin
End If
End If
ErrHandle:
lRet = RegCloseKey(lhKey)
End Function
'Wert für einen bestimmten
'Schlüsselnamen auslesen.
'
'Parameterbeschreibung
'---------------------
'hKey (Hauptschlüssel) : z.B. HKEY_CURRENT_USER
'sPath (Schlüsselpfad) : z.B. MeineAnwendung
'sValue (Schlüsselname): z.B. Path
'Rückgabewert : z.B. c:\programme\MeineAnwendung
Function fWertLesen(sPath As String)
Dim vRet As Variant
Dim hKey As Long
Dim sValue As String
sValue = ""
hKey = HKEY_LOCAL_MACHINE
RegOpenKey hKey, sPath, vRet
fWertLesen = fRegAbfrageWert(vRet, sValue)
RegCloseKey vRet
End Function
'Wird von "fWertLesen" aufgerufen und gibt den Wert
'eines Schlüsselnamens zurück. Hierbei wird autom.
'ermittelt, ob es sich um einen String oder Binärwert
'handelt.
Function fRegAbfrageWert(ByVal hKey As Long, _
ByVal sValueName As String) As String
Dim sBuffer As String
Dim lRes As Long
Dim lTypeValue As Long
Dim lBufferSizeData As Long
Dim iData As Integer
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)
End If
ElseIf lTypeValue = REG_BINARY Then
lRes = RegQueryValueEx(hKey, sValueName, 0, _
0, iData, lBufferSizeData)
If lRes = 0 Then
fRegAbfrageWert = iData
End If
End If
End If
End Function in der form:
Private Sub Form_Load()
tfKey.Text = ""
Liste.Clear
Dim Result As String
Dim mLen As Long
Dim n As Long
Result = GetSubFolder
mLen = Len(Result)
If mLen > 1 Then
Do
n = InStr(Result, Chr(0))
If n > 0 Then
Liste.AddItem Left(Result, n)
Result = Mid(Result, n + 1, 1024)
End If
Loop Until n < 2
End If
End Sub
Private Sub tfGo_Click()
Dim prnName As String
Dim sKey As String
sKey = "Software\Clients\Mail"
prnName = fWertLesen(sKey)
tfKey.Text = prnName
End Sub Jemand ne idee wo der fehler liegt ? |