VB lee el problema del registro, cómo obtener el nombre del valor a través de los datos
La estructura organizativa del registro
Antes de acceder al registro, primero debe comprender la estructura organizativa del registro. La forma más sencilla de comprender la estructura organizativa del registro es comenzar. "Editor del Registro", comience haciendo clic en el comando "Ejecutar" en el menú "Inicio", ingrese RegEdit y confirme, verá la ventana "Editor del Registro" (como se muestra en la Figura 1).
● Claves y subclaves
La estructura del Editor del Registro es muy similar a la del Explorador. Cada icono de carpeta en la ventana izquierda representa una clave, al igual que en la carpeta Just. Al igual que hay subcarpetas, también hay subclaves debajo de las claves del registro. Para representar completamente una subclave, se acostumbra utilizar la ruta a la carpeta. Por ejemplo, la subclave "Software" en HKEY_LOCAL_MACHINE se representa como HKEY_LOCAL_
MACHINE/Software, y la subclave "Software" en "Software" se representa como HKEY_LOCAL_
MACHINE/Software. La subclave "Microsoft" en "Software" se representa como HKEY_LOCAL_
MACHINE\Software\Microsoft
● Valor de clave (), nombre, datos y valor de clave predeterminado ().), nombre, datos y valores predeterminados
Cuando seleccionamos una clave (o subclave) en la ventana izquierda del Editor del Registro, el valor clave () de la clave aparecerá en la ventana derecha. Se puede dividir. en nombre y datos. Cada valor clave tiene al menos un valor predeterminado (predeterminado). Tomando la subclave "HKEY_CLASSES_ROOT/
.bmp" como ejemplo, su valor predeterminado es "ACDC_BMP". la clave es "ACDC_BMP". Además del valor de clave predeterminado, esta subclave también contiene el nombre "Tipo de contenido" y los datos "imagen/bmp"
registro propio de VB
. Funciones de la tabla
Después de comprender cómo está organizado el registro, hablemos sobre cómo acceder al registro. Así como accedemos a los archivos especificando la carpeta (directorio) donde se encuentra el archivo, al acceder al registro. Primero debemos especificar la clave. La clave que ve en el Editor del Registro es una cadena larga, como "HKEY_LOCAL_MACHINE/SOFTWARE/
Microsoft/Windows/CurrentVersion" en Visual Basic 6.0, proporciona un registro estándar. Ubicación para almacenar información del programa para aplicaciones creadas en VB: HKEY_CURRENT_USER\Software\VB y VBA Configuración del programa (para simplificar la narrativa, esta ubicación se llamará "VB" proporciona dos declaraciones y dos funciones que manejan los valores de configuración del programa almacenados en el ubicación del registro de la aplicación:
Función GetSetting(nombre de la aplicación, sección, clave[, predeterminado]): Lee el valor de configuración del registro
Función GetSetting(nombre de la aplicación, sección, clave[, predeterminado] ): p>
Declaración SaveSetting nombre de aplicación, sección, clave: guardar o crear valores de configuración de registro
Función GetAllSettings(nombre de aplicación, sección): Obtener valores de configuración de registro: devuelve múltiples configuraciones de registro. .
EliminarConfiguración nombre de aplicación, sección[, clave]: Elimina la configuración del registro.
Descripción de los parámetros utilizados anteriormente:
[ ]: indica opcional.
appname: expresión de cadena que contiene el nombre de la aplicación o proyecto, como una subclave en la ubicación estándar.
Sección: una expresión de cadena que contiene el nombre de la sección, que es una subclave bajo appname.
clave: expresión de cadena, la clave (nombre) de una subclave en la ubicación estándar (nombre de aplicación/
sección).
: Expresión de cadena, valor clave () de la subclave de la sección ubicación\appname\
estándar correspondiente al nombre de la clave (Nombre).
default: Expresión utilizada para devolver el valor predeterminado cuando no se establece ningún valor en la configuración de la clave de registro. Si se omite, el valor predeterminado es una cadena de longitud cero ("").
GetAllSettings devuelve una matriz de cadenas bidimensional Variant que contiene todas las configuraciones de claves de registro y sus valores correspondientes en la sección especificada. Si el nombre o la sección de la aplicación no existe, GetAllSettings devuelve una variante no inicializada.
Ejemplo uno
Cree un nuevo proyecto en VB6.0 y asígnele el nombre vbreg.vbp, elimine todos los formularios que contiene y luego haga clic derecho en el navegador de proyectos. Haga clic en el proyecto, seleccione Agregar módulo y asígnele el nombre vbreg.bas. Haga doble clic en reg.bas e ingrese el siguiente código:
Dim avntSettings As Variant
Dim intX As Integer
avntSettings = GetAllSettings(" Declaración API de VB 6 Cargador ", "Lista de archivos")
Para intX = 0 a UBound(avntSettings, 1)
Debug.Print avntSettings (intX, 0), avntSettings(intX, 1)
p>
Siguiente intX
El programa anterior primero usa la función GetAllSettings para recuperar los valores de dos claves de registro en la parte de la lista de archivos de "VB 6 API Claims". Subclave "cargador". El programa anterior primero usa la función GetAllSettings para recuperar los valores de dos claves de registro en la parte de la lista de archivos de la subclave "VB 6 API Claims Loader" y muestra los resultados en la ventana Inmediato. Antes de iniciar el programa, presione + para asegurarse de que se muestre la ventana inmediata en la pantalla. También abra el registro y compare el valor de la clave Ubicación estándar\Cargador de declaración API VB 6\Lista de archivos con el resultado.
El siguiente programa utiliza la instrucción SaveSetting para crear una subclave denominada "Mi proyecto\Mis subclaves" en una ubicación estándar y luego utiliza la función GetSetting para obtener una de las configuraciones y mostrarla. Como se pasan parámetros predeterminados, la función GetSetting debe tener un valor de retorno.
Tenga en cuenta que el nombre de la zona no se puede obtener utilizando la función GetSetting. Finalmente, use la instrucción DeleteSetting para eliminar la subclave.
Print "Left", GetSetting("My Project", "My Subkeys ", "Left", "0")
'Para tener una perspectiva, la depuración puede establecer un punto de interrupción aquí mientras se cambia al registro y se presiona el botón clave para actualizar para ver las subclaves que creó y sus valores
EliminarConfiguración "Mis proyectos", "Mis subclaves"
'Después de completar la operación, cambie al registro nuevamente y presione la clave para actualizar para ver si la subclave creada y su valor se han eliminado
Nota: antes de ejecutar este programa, asegúrese de que el "Explorador de texto API" se haya cargado automáticamente al iniciar VB, y que el Menú "Archivo" en el Explorador de texto API A continuación hay un archivo abierto de "Explorador de texto". En el menú "Archivo" del navegador de texto API, hay una lista de "Archivos de texto" abiertos. De lo contrario, abra el navegador de texto API y seleccione Abrir archivo de texto en el menú Archivo para abrir al menos un archivo de texto o base de datos.
Programación del Registro API de Windows
VB en sí proporciona cuatro funciones para el registro, pero estas funciones solo se pueden usar en "HKEY_CURRENT_USER
Software\VB y VBA ProgramSettings " para leer, borrar y programar. "Leer, eliminar y modificar valores de clave en". Este es el propósito para que las aplicaciones generales los utilicen. ¿Qué sucede si desea acceder a otras claves primarias o subclaves que no son "ubicaciones estándar"? use la API de Windows como ayuda.
En Windows, cada clave corresponde a un identificador de clave (que es un valor entero largo, generalmente representado como hKey en el programa. Windows usa hKey para representar el valor de la clave). El motivo es mejorar la eficiencia del acceso al registro, ya que los números enteros son más eficientes que las cadenas, así que comencemos por comprender cómo obtener el identificador del valor clave (es decir, hKey). Las claves de nivel superior son HKEY_CLASSES_ROOT, HKEY_CURRENT
._USER, HKEY_LOCAL_MACHINE, etc., los valores hKey de estas claves son fijos.
---------- ---------- -
Identificador de llave
------- ----- - ---- ------
HKEY_CLASSES_ROOT &H80000000
HKEY_ CURRENT_CONFIG &H80000005 HKEY_CURRENT_USER &H80000001
HKEY_DYN_DATA &H80000006
HKEY_LOCAL_MACHINE & . H80000002
HKEY_USERS &H80000003
------ ---------- ----
Pero para obtener estas claves subclave manejar, debe llamar a la función API RegOpenKey, que contiene tres parámetros. El método de uso es el siguiente:
Private Declare RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String. , phkResult As Long) As Long
Aquí, hKey es el identificador de clave, lpSubkey es la cadena de la subclave, PhkResult es el valor de retorno de la función, si la llamada RegOpenKey es exitosa, la hKey de la Se devuelve la subclave.
Por ejemplo, si queremos obtener la subclave "SOFTWARE/Microsoft" en HKEY_LOCAL_MA
CHINE, usaremos la siguiente declaración:
Dim ret As Largo, hKey As Long
ret=RegOpenKey(HKEY_LOCAL_
MACHINE, "SOFTWARE\Microsoft", hKey)
Si ret = 0 Entonces
'ret = 0 significa éxito, el valor de hKey es igual al identificador de clave de la subclave "SOFTWARE
/Microsoft "
End If
Tenga en cuenta que llamar a las funciones API de la tabla de registro, como la función RegOpenKey anterior, puede hacer que cambien los valores clave en el registro. Por ejemplo, RegOpenKey arriba), devuelve 0 si tiene éxito; de lo contrario, devuelve un valor distinto de cero, que es diferente de la convención de las funciones de VB, así que preste atención a esto.
El primer parámetro hKey de RegOpenKey puede ser un identificador de subclave o un valor de identificador de clave de nivel superior (por ejemplo, HKEY_CLASSES
_ROOT, HKEY_LOCAL_MACHINE, etc.). En el ejemplo anterior, hKey es igual al identificador de subclave de "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft", entonces, si queremos obtener "HKEY_
LOCAL_MACHINE\SOFTWARE\Microsoft SOFTWARE\Microsoft
Windows \CurrentVersion" identificador de subclave, el programa es el siguiente:
Dim ret As Long, hKey As Long, hKey2 As Long
ret=RegOpenKey(hKey, "Windows\Current
Versión", hKey2)
'hKey2 será igual a "HKEY_LOCAL_MAC
'.
LOCAL_MAC
HINE\SOFTWARE\Microsoft' para el identificador de subclave 'Windows\
CurrentVersion'
En el programa anterior, tenga cuidado de no utilizar "Windows\
Agregue "\" antes de "CurrentVersion" para convertirlo en "Windows