Aqui hay un conjunto de funciones que te permitirán leer y escribir al registro de windows o los archivos de inicialización. Estas funciones te ayudarán a realizar las mas comunes de las tareas asociadas con el almacenamiento de los settings y recuperación de los mismos. Hay muchas situaciones en las que debemos acceder al registro y las funciones del Visual Basic no te permite con un comando rápido y fácil.

Estas funciones vienen reflejadas en el modulo .bas que tu puedes incluir en tu proyecto. El módulo tiene todas las explicaciones para utilizarlo en perfecto idioma inglés. Todas las funciones vuelven un resultado diferente a cero cuando ocurre un error.

Aunque el uso del registro se recomienda, la necesidad de tener acceso a archivos ini todavía existe. Por esa razón, éstos funcionan y seguirán funcionando.

Registro /Archivo Ini APIs Usadas

Las APIs del registro provienen de Advapi32.dll mientras que las APIs del archivo Ini provienen del Kernel32.dll.

RegCloseKey RegOpenKeyEx GetPrivateProfileInt
RegCreateKeyEx RegQueryValueEx GetPrivateProfileSection
RegDeleteKey RegSetValueEx GetPrivateProfileString
RegDeleteValue   WritePrivateProfileString
RegEnumValue    
Descripción del Módulo de Registro

Este módulo estándar dota de funciones de almacenamiento y lectura tanto de valores del registro como de los archivos Ini.

Nombre Funcion Descricion
fReadValue Lee una cadena o binario o integer desde el registro o una cadena o integer de un archivo ini.
fWriteValue Escribe una cadena o binario o integer desde el registro o una cadena o integer de un archivo ini. Si la clave del registro o la clave del fichero Ini no existe se creará.
fEnumValue Enumera toda la secuencia, dword y algunos valores binarios debajo de un subkey del registro o todos los valores en una sección particular de un archivo de .ini. La sección de .ini enumerada está limitada a 8K.
fEnumKey Enumera todas las subkeys bajo la clave del registro.
fDeleteKey Borra una subclave del registro. La clave no puede tener subclaves.
fDeleteValue Borra un valor del registro o de un archivo Ini.
fReadIniFuzzy Lee una cadena de un archivo Ini cuando solo es conocida una porcion de la sección. Si el cabecero de la sección contiene multiples palabras puedes especificar cualquier palabra completa. Te devolverá la sección completa.
Parámetros comunes

sTopKeyOrIniFile – Puede tener los siguientes valores de cadena:

Abreviatura de la clave mas alta del registro desde esta lista:

Abreviación Significado
HKCU HKey Current User
HKLM HKey Local Machine
HKU HKey User
HKDD HKey Dynamic Data
HKCC HKey Current Configuration
HKCR HKey Classes Root
O, el full path de un archivo .ini (ej. C:\Windows\MyArchivo.ini”)

sSubKeyOrSection – Puede ser uno de los siguientes valores de cadena:

  • Una subclave del registro o
  • una seccion de un archivo .ini

sValueName – Puede ser uno de los siguientes valores:

  • Una entrada de registro o
  • una entrada de un archivo .ini

sValueType – Puede ser uno de los siguientes valores de cadena:

  • “S” para un valor de cadena en el registro o operaciones en un archivo ini o
  • “B” para un valor de 16-bit binario
  • “D” para un valor de 32-bit integer (dword).

vDefault

El valor de la cadena, binario o integer por defecto que devolverá.

vValue

Un valor de la secuencia, binario o del número entero. Al leer valores, se fija al vDefault si es erroneo (0 al leer un número entero de un archivo de .ini)

Ejemplo de registro
   HKey_Current_User      SoftwareCompanyNameProductNameAppName

Setting1 = "String1"

Setting2 = "String2"

Setting3 = True

Setting4 = 12345

AppVersion

(default) = "String1"

Company2Name

Company3Name
Ejemplo de archivo Ini
   C:WindowsMyFile.Ini
[Section1]
Setting1=String1
Setting2=String2
Setting3=5
[Section Name]

Setting4=String4

Setting5=String5

Setting6=6
Ejemplos de lectura de un valor simple

Sintaxis de la Función:

   Function fReadValue (ByVal sTopKeyOrFile As String, _
      ByVal sSubKeyOrSection As String, ByVal sValueName As String, _
ByVal sValueType As String, ByVal vDefault As Variant, _
vValue As Variant) As Long

Ejemplo 1
Lee el valor de la cadena Setting1 del registro y lo almacena en la variable sSetting. Si el valor no existe usa “No Name” como por defecto.

   Call fReadValue("HKCU", "SoftwareCompanyNameProductNameAppName", _
     "Setting1", "S", "No Name", sSetting)

Ejemplo 2
Lee una cadena similar de un archivo .ini.

 Call fReadValue("C:WindowsMyfile.ini", "Section1", "Setting1", _
	"S","No Name", sSetting)

Ejemplo 3
Lee el valor binario (True | False) Setting3 del registro, por defecto es falso.

   Call fReadValue("HKCU", "SoftwareCompanyNameProductNameAppName", _
              "Setting3", "B", False, bSetting)

Ejemplo 4
Lee un valor integer (dword) de Setting4 desde el registro. Por defecto es 100.

   Call fReadValue("HKCU", "SoftwareCompanyNameProductNameAppName", _
              "Setting4", "D", 100, lSetting)

Ejemplo 5
Lee un valor integer de un archivo .ini y chequea el codigo de retorno.

   lResult = fReadValue("C:WindowsMyfile.ini", "Section1", "Setting3", "B", _
              "0", iSetting)   if lResult <> 0 then . . . .

Ejemplo 6
Lee el valor por defecto de la entrada …\AppVersion . La única diferencia con el ejemplo 1 es que el parametro sValueName está en blanco.

   Call fReadValue("HKCU", "SoftwareCompanyNameProductNameAppName", "", _
              "S", "", sSetting)
Ejemplos de escrtura de un valor simple

Sintaxis de la Función:

   Function fWriteValue(ByVal sTopKeyOrFile As String, ByVal sSubKeyOrSection As String, _
              ByVal sValueName As String, _ByVal sValueType As String, ByVal _vValue As Variant) As Long

Ejemplo 1
Escribe la cadena “String1″ a la entrada “Setting1″ del registro.

   Call fWriteValue("HKCU", "SoftwareCompanyNameProductNameAppName", _
              "Setting1", "S", "String1")

Example 2
Escribe la cadena “String2″ a la entrada Setting2 en el archivo Ini.

   lResult = fWriteValue("C:WindowsMyfile.ini", "Section1", "Setting2","S", "String2")

Ejemplo 3
Escribe un valor binario (True | False) a la entrada del registro “Setting3″.

   bValue = True   Call fWriteValue("HKCU", "SoftwareCompanyNameProductNameAppName", _
              "Setting3", "B", bValue)

Ejemplo 4
Escribe un valor entero (dword) a la entrada de registro “Setting4″.

   lValue = 1234   Call fWriteValue("HKCU", "SoftwareCompanyNameProductNameAppName", _
              "Setting4", "D", lValue)

NOTA1: Esta función creará la clave del registro o la entrada en el fichero ini si no existe.

Examples of Enumerating Values

Function Syntax:

   Public Function fEnumValue(ByVal sTopKeyOrIniFile As String, _
              ByVal sSubKeyOrSection As String, sValues As String) As Long

Parameter:

sValues – A string of the form:

EntryName=Value|EntryName=Value|…. EntryName=Value||

Where – Value can be a string or binary value. and “|” equals vbNullChar (chr(0)).

Example 1
Retrieve all values under the “AppName” registry key.

   Call fEnumValue("HKCU","SoftwareCompanyNameProductNameAppName", sValues)

sValues will contain:

“Setting1=String1|Setting2=String2|Setting3=True||”

Example 2
Retrieve all values under the [Section1] section of “C:\Windows\Myfile.ini”.

   Call fEnumValue("C:WindowsMyfile.ini", "Section1", sValues)

sValues will contain the same string as in Example 1.

NOTE1: The .ini section enumerated is limited to 8K characters. The .ini section enumerated is limited to 8K characters.

Examples of Enumerating Keys

Function Syntax:

   Public Function fEnumKey(ByVal sTopKey As String, ByVal sSubKey As String, _              sValues As String) As Long

Parameter:

sValues – A string of the form:
SubKeyName|SubKeyName|…. SubKeyName||
Where – “|” equals vbNullChar (chr(0)).

Example 1
Retrieve all key names under HKCU\Software.

   Call fEnumKey("HKLM", "Software", sValues)

sValues will contain:

“CompanyName|Company2Name|Company3Name||”

Ejemplo de borrado de claves

Sintaxis de la función:

   Public Function fDeleteKey(ByVal sTopKey As String, _
              ByVal sSubKey As String, ByVal sKeyName As String) As Long

Parametros:

sSubKey – El path del registro a la sub-key para borrar.

sKeyName – El nombre de la sub-key del registro para borrar.

Ejemplo 1
Borrar el “AppName” sub-key.

   Call fDeleteKey("HKCU","SoftwareCompanyNameProductNameAppName", "AppName")

NOTA: La clave que va a ser borrada no puede ser del nivel superior(HKCU, …) y no puede tener sub-keys

Ejemplo de borrado de valores

Sintaxis de la Función:

   Public Function fDeleteValue(ByVal sTopKeyOrFile As String, _
              ByVal sSubKeyOrSection As String, ByVal sValueName As String) As Long

Ejemplo 1
Borrar el valor “Setting3″ del registro.

   Call fDeleteValue("HKCU","SoftwareCompanyNameProductNameAppName", "Setting3")

Ejemplo2
Borrar la entrada “Setting3″ del fichero Ini.

   Call fDeleteValue("C:WindowsMyfile.ini", "Section1", "Setting3")
Ejemplo de fReadIniFuzzy

Sintaxis de la Función:

   Public Function fReadIniFuzzyByVal sIniFile As String, sSection As String, _
              ByVal sIniEntry As String, ByVal sDefault As String, _sValue As String) As Long

Parametros:
sIniFile – El path hasta el archivo ini para leer.
sSection – Cualquier parte completa del nombre de sección del archivo de .ini.

Ejemplo: [Section Name]

sSection puede ser “Section” o “Name” pero no un valor parcial como “Sect” o “ame”.
sIniEntry – La entrada a leer.
sDefault – La cadena por defecto a devolver.
sValue – La cadena de lectura en caso de error de sDefault.

Ejemplo 1
Leer la entrada “Setting4″ del la [Section Name] de MyFile.ini.

   lResult = fReadIniFuzzy("C:WindowsMyfile.ini", "Name", Setting4, sValue)

Produce:
lResult = 0
sSection = “Section Name”
sValue = “String4″

Descargar el Modulo aquí.


Vota este artículo:
1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (No Ratings Yet)
Loading ... Loading ...

Posts anterior y posterior:


Posts Relacionados: