'IN frmMain
'Beispiel : Dieses Beispiel listet alle Ordner ab einem bestimmten Ordner auf.
' Es werden
' alle Ordner von HKEY_CURRENT_USER\Software aufgelistet.
'Hallo... gn.Silence
'Hier ein kleines Beispiel das dein Problem lösen könnte. Du musst das Beispiel
' natürlich
'noch deinen Bedürfnissen anpassen.
'NG.:18.03.03.do.
Private Sub Form_Load()
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
List1.AddItem Left(Result, n)
Result = Mid(Result, n + 1, 1024)
End If
Loop Until n < 2
List1.ListIndex = 0
End If
End Sub
'In modGetSubFolder
Private 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
Private Declare Function RegCloseKey Lib "advapi32.dll" _
(ByVal hKey As Long) _
As Long
Private Declare Function RegEnumKey Lib "advapi32.dll" _
Alias "RegEnumKeyA" _
(ByVal hKey As Long, _
ByVal dwIndex As Long, _
ByVal lpName As String, _
ByVal cbName As Long) _
As Long
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_NOTIFY = &H10
Private Const KEY_CREATE_LINK = &H20
Private Const SYNCHRONIZE = &H100000
Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or _
KEY_QUERY_VALUE Or _
KEY_SET_VALUE Or _
KEY_CREATE_SUB_KEY Or _
KEY_ENUMERATE_SUB_KEYS Or _
KEY_NOTIFY Or _
KEY_CREATE_LINK) And _
(Not SYNCHRONIZE))
Private Const HKEY_CURRENT_USER = &H80000001
Private Const ERROR_SUCCESS = 0&
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"
lRet = RegOpenKeyEx(HKEY_CURRENT_USER, 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
'MfG
'Frank |