Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/03/2004, 06:19
ajojara
 
Fecha de Ingreso: febrero-2004
Mensajes: 12
Antigüedad: 20 años, 3 meses
Puntos: 0
Bueno, yo lo que hago leer del registro, pero quizás esto te pueda ayudar. Primero tienes estas funciones que debes declarar en un módulo:
Public Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long

Public Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long

Public Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long

Y mi ejemplo:
Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean
Dim i As Long ' Contador de bucle
Dim rc As Long ' Código de retorno
Dim hKey As Long ' Controlador de una clave de Registro abierta
Dim hDepth As Long '
Dim KeyValType As Long ' Tipo de datos de una clave de Registro
Dim tmpVal As String ' Almacenamiento temporal para un valor de clave de Registro
Dim KeyValSize As Long ' Tamaño de variable de clave de Registro
'------------------------------------------------------------
' Abrir clave de registro bajo KeyRoot {HKEY_LOCAL_MACHINE...}
'------------------------------------------------------------
rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' Abrir clave de Registro

If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' Error de controlador...

tmpVal = String$(1024, 0) ' Asignar espacio de variable
KeyValSize = 1024 ' Marcar tamaño de variable

'------------------------------------------------------------
' Obtener valor de clave de Registro...
'------------------------------------------------------------
rc = RegQueryValueEx(hKey, SubKeyRef, 0, _
KeyValType, tmpVal, KeyValSize) ' Obtener o crear valor de clave

If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' Controlar errores

If (Asc(Mid(tmpVal, KeyValSize, 1)) = 0) Then ' Win95 agregar cadena terminada en valor nulo...
tmpVal = Left(tmpVal, KeyValSize - 1) ' Encontrado valor nulo, se va a quitar de la cadena
Else ' En WinNT las cadenas no terminan en valor nulo...
tmpVal = Left(tmpVal, KeyValSize) ' No se ha encontrado valor nulo, sólo se va a extraer la cadena
End If
'------------------------------------------------------------
' Determinar tipo de valor de clave para conversión...
'------------------------------------------------------------
Select Case KeyValType ' Buscar tipos de datos...
Case REG_SZ ' Tipo de datos String de clave de Registro
KeyVal = tmpVal ' Copiar valor de cadena
Case REG_DWORD ' Tipo de datos Double Word de clave del Registro
For i = Len(tmpVal) To 1 Step -1 ' Convertir cada bit
KeyVal = KeyVal + Hex(Asc(Mid(tmpVal, i, 1))) ' Generar valor carácter a carácter
Next
KeyVal = Format$("&h" + KeyVal) ' Convertir Double Word a cadena
End Select

GetKeyValue = True ' Se ha devuelto correctamente
rc = RegCloseKey(hKey) ' Cerrar clave de Registro
Exit Function ' Salir

GetKeyError: ' Borrar después de que se produzca un error...
KeyVal = "" ' Establecer valor a cadena vacía
GetKeyValue = False ' Fallo de retorno
rc = RegCloseKey(hKey) ' Cerrar clave de Registro
End Function

Espero que te sirva