Red de conocimiento informático - Problemas con los teléfonos móviles - Programación de la función de roaming

Programación de la función de roaming

Cuando hay un problema con Windows, será más fácil resolverlo si puede comprender el registro del sistema Windows. Muchos software comerciales o profesionales reescriben el registro para instalarlo y ejecutarlo correctamente cuando se instala por primera vez en su máquina. Por supuesto, para convertirse en un maestro de la programación, es necesario dominar la tecnología de lectura y escritura del registro. Hacer un buen uso del registro agregará mucho color a tu aplicación. A continuación, el autor presentará en detalle los métodos de programación relacionados con el registro en VB.

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. el registro proporcionado por el editor de tablas. El método de inicio es hacer clic en el comando Ejecutar en el menú Inicio, ingresar RegEdit y confirmar, y ver la ventana del Editor del Registro (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 y, al igual que hay subcarpetas debajo de las carpetas, hay subclaves debajo de las claves en el registro. Para representar completamente una subclave, se acostumbra utilizar la representación de la ruta de la carpeta. Por ejemplo, la subclave "Software" en HKEY_LOCAL_MACHINE se representa como HKEY_LOCAL_.

MACHINE\Software y la subclave "Microsoft" en "Software" se representa como HKEY _local_.

Máquina\Software\Microsoft

Valor de clave (), nombre de clave (Name), datos (Data) y valor de clave predeterminado (Default)

Cuando Cuando selecciona una clave de registro (o subclave) en la ventana izquierda del Editor del Registro, el valor de la clave () de la clave aparece en la ventana derecha y se divide en dos partes: nombre de la clave y datos. Para cada clave, hay al menos un valor de clave predeterminado (valor predeterminado), que es la "raíz de clase de clave h"

. bmp " subclave, por ejemplo, su valor de clave predeterminado 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".

VB Proporcionado por sí mismo.

Sobre las funciones del registro

Después de comprender la estructura organizativa del registro, analicemos cómo acceder a él, como cuando accedemos a un archivo. , debemos especificar dónde está el archivo. Al igual que la carpeta (directorio), primero debemos especificar la clave al acceder al registro. La clave de registro que se ve en el editor de registro es una cadena larga, como "HKEY_LOCAL_MACHINE\SOFTWARE\

Microsoft\Windows\versión actual. En Visual Basic 6.0, se proporciona una ubicación de registro estándar para almacenar información de programa para aplicaciones creadas en VB: HKEY_Current_Users\Software\VB y VBA Program Settings\(para simplificar la descripción, esto Esta posición se denominará "posición estándar" a continuación). VB proporciona dos declaraciones y dos funciones para procesar la configuración del programa almacenada en la ubicación de registro de la aplicación:

Función getsetting (nombre de la aplicación, sección, clave [, predeterminada]): recupera el valor de la configuración del registro.

Declaración SaveSetting nombre de aplicación, sección, clave: guarda o crea valores de configuración del registro.

Función GetAllSettings(nombre de aplicación, sección): Devuelve una matriz que contiene múltiples configuraciones de registro.

Declaración de eliminación de configuración de nombre de aplicación, sección [, clave]: elimina el valor de configuración del registro.

Descripciones de parámetros utilizadas anteriormente:

[]: indica opcional.

Appname: Expresión de cadena que contiene el nombre de la aplicación o proyecto hijo de la ubicación estándar.

Sección: expresión de cadena, que contiene el nombre del área, que es un subelemento bajo appname.

Palabra clave: expresión de cadena, ubicación estándar\appname\

Nombre de clave del subelemento de la sección.

: expresión de cadena, ubicación estándar \appname\

el subelemento de sección corresponde al valor clave () del nombre del elemento (Nombre).

Predeterminado: expresión, si no hay ningún valor establecido en la configuración de la clave de registro, se devuelve el valor predeterminado. Si se omite, el valor predeterminado es una cadena de longitud cero (" ").

GetAllSettings devuelve una variable, que es una matriz bidimensional que contiene el contenido de una cadena. Una matriz bidimensional que contiene todas las configuraciones de las claves de registro y sus valores correspondientes en el rango especificado. Si el nombre de la aplicación o la sección no existe, GetAllSettings devolverá una variable no inicializada.

Un ejemplo

Cree un nuevo proyecto en VB6.0, asígnele el nombre vbreg.vbp, elimine todos los formularios que contiene, haga clic derecho en el explorador de proyectos y seleccione Agregar módulo, llamado vbreg.bas, haga doble clic en reg.bas, ingrese el siguiente código:

Dim avntSettings como variante

Dim intX como un número entero

avntsettings = getallsettings ( "Cargador de notificaciones API de VB 6", "Lista de archivos")

Para intX = 0 a UBound(avntSettings, 1)

Depurar. Imprimir avntSettings(intX, 0), avntSettings(intX, 1)

Siguiente intX

El programa anterior primero usa la función GetAllSettings para recuperar el archivo para el "cargador de declaraciones API de VB 6 " subclave Enumere los valores de dos claves de registro en la sección y muestre los resultados en la ventana Inmediato. Presione antes de comenzar para asegurarse de que se muestre la ventana Inmediato en la pantalla. Al mismo tiempo, abra el registro y compare el valor clave de la ubicación estándar\cargador de declaración API VB 6\lista de archivos con el resultado.

El siguiente programa usa la instrucción SaveSetting para crear una subclave llamada "Mi proyecto\Mi subclave" en una ubicación estándar y luego usa la función GetSetting para obtener un valor de configuración y mostrarlo. Debido a los valores predeterminados de los parámetros pasados, la función GetSetting debe tener un valor de retorno.

Tenga en cuenta que no puede utilizar la función GetSetting para obtener el nombre de la zona. Finalmente, use la instrucción DeleteSetting para eliminar la subclave.

Guardar configuración "Mi Proyecto", "Mis Hijos", "Arriba", 75

Guardar configuración "Mi Proyecto", "Mis Hijos", "Izquierda", 50

Depurar. Imprima "arriba", obtenga configuración ("mi proyecto", "mis subclaves", "arriba", "25")

Depurar. Imprima "Izquierda" y obtenga la configuración ("Mi proyecto", "Mi subproyecto", "Izquierda", "0")

Para facilitar la observación, la depuración puede establecer puntos de interrupción aquí y cambiar al mismo tiempo. time Vaya al registro y presione la tecla Actualizar para ver las subclaves que creó y sus valores clave.

Elimine las configuraciones "Mi proyecto" y "Mis subclaves"

Después de ejecutar, cambie al registro nuevamente y presione la tecla Actualizar para observar las subclaves creadas y sus valores clave, ya sea que ser eliminado.

Nota: antes de ejecutar este programa, asegúrese de que el navegador de texto API se cargue automáticamente al iniciar VB y que haya una lista de archivos de texto abiertos en el menú de archivos del navegador de texto API.

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 de la API de Windows

Aunque el propio VB proporciona cuatro funciones relacionadas con el registro, estas funciones solo se pueden utilizar en el software "Usuario actual de HKEY"

Software \Configuración del programa VB y VBA". Esto se puede lograr usándolos para aplicaciones generales. ¿Qué sucede si quiero acceder a otras claves primarias o subclaves que no están en la "ubicación estándar"? En este momento, se debe contar con la ayuda de Windows. API.

En Windows, cada clave corresponde a un identificador de clave (igual a un valor entero largo, generalmente representado por la clave h en el programa. La razón por la cual Windows usa hKey para representar la clave). El registro es más eficiente, porque la eficiencia de operación de los números enteros es mejor que la de las cadenas, así que primero comprendamos cómo obtener el identificador de clave de Key (es decir, hKey). Las palabras clave de nivel superior incluyen Keys class_root y Keys current.

_USER, hKey_LOCAL_MACHINE, etc. Los valores HKEY de estas claves son fijos, y sus valores son los que se muestran en la siguiente tabla:

-

Identificador de llave

-

HKEY _CLASS_ROOT ampH80000000

HKEY CURRENT CONFIG ampHKEY _CURRENT_USER ampH80000001

HKEY _ DYN _ DATA ampH80000006

HKEY _local_machine ampH80000002

HKEY _user ampH80000003

-

Pero si desea obtener los identificadores de subclave de estas claves, debe llamar a RegOpenKey La función API Regopenkey contiene tres parámetros y su uso es el siguiente:

Privado declara RegOpenKey Lib "advapi32.dll "alias" RegOpenKeyA" (ByVal hKey es Long, ByVal lpSubKey es String, phkResult es Long) as Long

Aquí hKey es el identificador de clave, lpSubkey es la cadena de la subclave y PhkResult es el valor de retorno de la función. Si la llamada a RegOpenKey es exitosa, este parámetro devolverá la hKey de la subclave. /p>

Por ejemplo, queremos ir a HKEY local en Massachusetts

La subclave "SOFTWARE\Microsoft" en CHINE usa la siguiente declaración:

Dim ret. tiene la misma longitud, hKey tiene la misma longitud

ret = RegOpenKey(HKEY _Local_

Máquina, "Software\Microsoft", hKey)

Si ret = 0, entonces

Ret = 0 indica éxito, el valor de hKey es igual al identificador de clave de la subclave "Software"

\Microsoft "

It finalizará si...

Tenga en cuenta que después de llamar a la función API de registro (como RegOpenKey anterior), se devuelve 0 si tiene éxito; de lo contrario, se devuelve un valor distinto de cero, que es diferente de la convención. de funciones VB. Por favor preste especial atención.

El primer parámetro hKey de RegOpenKey puede especificar el valor del identificador de clave de nivel superior (por ejemplo, HKEY_Class

_ROOT, HKEY_LOCAL_MACHINE, etc.) o puede ser un identificador de subclave.

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\

Windows\CurrentVersion ", el programa es el siguiente:

Dim ret tiene la misma longitud, hKey tiene la misma longitud, hKey2 tiene la misma longitud

ret=RegOpenKey(hKey, " Windows\Current

Versión", hKey2)

HKEY 2 será igual a HKEY MAC local.

HINE\Software\Microsoft "Windows"

Identificador de subclave de CurrentVersion

En el programa anterior, tenga cuidado de no ingresar "Windows\

Agregue "\" antes de "CurrentVersion" para convertirlo en "\Windows"

\CurrentVersion ", lo cual es incorrecto.

Las siguientes son algunas otras API (API de 32 bits):

● RegSetEx(): almacena datos dentro del alcance de la clave de registro abierta;

● RegCloseKey (): libera el identificador de la palabra clave especificada;

● RegQueryEx(): busca el valor relacionado con el valor clave que especificaste en el registro;

● RegCreateKeyEx() : Crear y abrir la palabra clave especificada, si ya existe

● RegEnumKeyEx(): enumera las subclaves de la clave de registro especificada (32 bits); : cada vez que llame para enumerar el valor de una clave de registro especificada, copie el nombre y el bloque de datos de un valor de índice;

● RegDeletekey(): elimine una palabra clave y sus subclaves;

● RegDelete(): Elimina el valor nombrado en la clave de registro especificada.

Conclusión