Foros del Web » Programación para mayores de 30 ;) » Programación General »

Como crear claves en el registro de windows desde VB 6

Estas en el tema de Como crear claves en el registro de windows desde VB 6 en el foro de Programación General en Foros del Web. Holaa, En esto si que estoy perdido.... Mi app tiene una opcion para que se inicie automaticamente cada vez que se arranque el ordenador, así ...
  #1 (permalink)  
Antiguo 23/03/2004, 19:06
Avatar de GeRuNdIo  
Fecha de Ingreso: marzo-2004
Ubicación: Sanlúcar de Barrameda, Cádiz
Mensajes: 232
Antigüedad: 20 años, 1 mes
Puntos: 2
Como crear claves en el registro de windows desde VB 6

Holaa,
En esto si que estoy perdido....
Mi app tiene una opcion para que se inicie automaticamente cada vez que se arranque el ordenador, así que la única forma es añadiendo una clave al registro.... HKEY_LOCAL_MACHINE..../RUN
A ver si alguien me echa un cable, si me pone un ejemplo, mejor que mejor.
Yo he encontrado un articulo, pero no viene muy claro y es muy corto, y la verdad estoy un poco liado con este tema.
Un saludo y muchas gracias!!!!
__________________
Una buena forma de sacar las castañas del fuego sin quemarse: LEE FOROSDELWEB..... :si:
------
F.P.R. MCAD .NET
  #2 (permalink)  
Antiguo 24/03/2004, 06:19
 
Fecha de Ingreso: febrero-2004
Mensajes: 12
Antigüedad: 20 años, 2 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
  #3 (permalink)  
Antiguo 24/03/2004, 06:46
Avatar de GeRuNdIo  
Fecha de Ingreso: marzo-2004
Ubicación: Sanlúcar de Barrameda, Cádiz
Mensajes: 232
Antigüedad: 20 años, 1 mes
Puntos: 2
Muchisimas gracias, lo probare a ver si consigo hacerlo, ya te informare cuando lo haya intentado.
__________________
Una buena forma de sacar las castañas del fuego sin quemarse: LEE FOROSDELWEB..... :si:
------
F.P.R. MCAD .NET
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:04.