Windows- Registry

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Windows- Registry

Lösung

von moritz » Di, 17.05.2005 09:51

lpSubkey muß in OO- Basic als Referenz übergeben werden, also:

Declare Function RegOpenKey Lib "advapi32.dll" _
Alias "RegOpenKeyA" (ByVal hKey As Long, _
lpSubKey As String, phkResult As Long) As Long
Logisch..
Moritz

Registry

von moritz » Mo, 16.05.2005 11:42

Danke für Deine Antwort. Ich vermute einen Bug in OO 1.1.4. Ich wüßte nicht, was ich noch probieren sollte. Bei ähnlichen Zugriffen auf die Registry hatte ich keine Probleme, nur RegEnumKey macht Ärger.
Moritz

Windows- Registry

von ykcim » Mo, 16.05.2005 11:26

Hi,

ich habe den Weg auch mal versucht und es nicht geschafft.

Schau mal in die Bibliothek ImportWizard, Modul API.
Vielleicht hilft Dir das weiter.

mfg
Michael

Windows- Registry

von moritz » So, 15.05.2005 20:58

Hallo, kann mir hier vielleicht jemand sagen, warum der folgende Code nicht funtioniert. Ich möchte Einträge aus der Registry auslesen. Der Pfad ist bekannt, aber nicht die einzelnen Unterverzeichnisse. Unter VBA funktioniert das Ganze, mit den kleinen Änderungen müßte es auch mit OO gehen. Es kommt keine Fehlermeldung, die Anzahl der Unterverzeichnisse wird richtig ermittelt. Das problem ist, daß RegEnumKey keinen String ausgibt.
Hat jemand einen Tip, ob man hier etwas ändern kann. Wie gesagt, unter VBA und Winword97 funktioniert es. Und mit ähnlichen Funktionen unter OO hatte ich auch kein Problem.
Moritz

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

Declare Function RegOpenKey Lib "advapi32.dll" _
Alias "RegOpenKeyA" (ByVal hKey As Long, _
ByVal lpSubKey As String, phkResult As Long) As Long



sub test()
Dim i As Integer
Const HKEY_CURRENT_USER = &H80000001
Public Const ERROR_NONE = 0&

vkeys = GetAllKeys(HKEY_CURRENT_USER, "Console")
For i = LBound(vkeys) To UBound(vkeys)
MsgBox vkeys(i)
Next
End Sub

Public Function GetAllKeys(hKey As Long, _
strPath As String) As Variant

Dim lRegResult As Long
Dim lCounter As Long
Dim hCurKey As Long
Dim strBuffer As String
Dim lDataBufferSize As Long
Dim strNames() As String
Dim intZeroPos As Integer

lCounter = 1
lRegResult = RegOpenKey(hKey, strPath, hCurKey)
'MsgBox lRegResult
Do
lDataBufferSize = 255
strBuffer = String(lDataBufferSize, " ")
jetzt müßte strBuffer ein Unterverzeichnis (Schlüssel) enthalten, strBuffer bleibt aber leer
lRegResult = RegEnumKey(hCurKey, lCounter, strBuffer, lDataBufferSize)
If lRegResult = ERROR_NONE Then
ReDim Preserve strNames(lCounter) As String
intZeroPos = InStr(strBuffer, Chr$(0))
If intZeroPos > 0 Then
strNames(UBound(strNames())) = left$(strBuffer, intZeroPos - 1)
'MsgBox UBound(strNames)
Else
strNames(UBound(strNames())) = strBuffer
' MsgBox UBound(strNames)
End If
lCounter = lCounter + 1
Else
Exit Do
End If
Loop
GetAllKeys = strNames()
End Function

Nach oben