¿Cómo utilizar VB para implementar la asociación de archivos?
Const pública HKEY_LOCAL_MACHINE = &H80000002
Const pública HKEY_USERS = &H80000003
Const pública HKEY_PERFORMANCE_DATA = &.H80000004
Const pública HKEY_CURRENT_ CONFIG = &H80000005
Const pública HKEY_DYN_DATA = &3
REG_DWORD = 4
REG _DWORD_BIG_ENDIAN = 5
REG_MULTI_SZ = 7
End Enum
(Esta enumeración se utiliza para definir dwType)
Declarar función RegCreateKey Lib "advapi32.dll" alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String,
phkResult As Long) As Long '''' Esta función se utiliza para crear la clave principal del registro
Declarar función RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long ''''Esta función se utiliza para cerrar el registro abierto
Función de declaración RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long ''''Esta función se utiliza para reescribir el valor clave del registro
Las tres funciones API relacionadas son RegCreateKey [ crear subclave] y RegClose [Cerrar subclave]
Descripción detallada:
Función RegCreateKey:
Función de declaración de declaración VB RegCreateKey Lib "advapi32.dll" alias "RegCreateKeyA "
(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
hKey.Key handle
lpSubKey: nombre de subclave o ruta
phkResult: si RegOpenKey se ejecuta correctamente, este parámetro devolverá la hKey de la subclave.
Valor de retorno: =0, indica éxito; ≠0, indica error. [Tenga en cuenta que esto es diferente de otras funciones API]
Su uso de parámetros es el mismo que RegOpenKey. La diferencia es que RegOpenKey solo puede abrir una subclave existente, mientras que RegCreateKey puede crear una subclave. Más específicamente, si la subclave creada llamando a RegCreateKey ya existe, su función es la misma que RegOpenKey. Debido a esta característica de RegCreateKey, algunos programadores simplemente no usan RegOpenKey, sino que usan RegCreateKey para reemplazar RegOpenKey de manera uniforme.
Función RegClose:
Declarar la función RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Cuando ya no accedemos al registro, Es una mejor práctica cerrar una subclave abierta o creada, tal como tenemos que cerrarla después de usar la función de apertura de archivo en lenguaje C. ByVal lpData As String, ByVal cbData As Long) As Long
hKey:Key Handle
lpSubKey:Subkey Name o Path
dwType:Datatype, pero en este En el ejemplo, solo puede aceptar REG_SZ[tipo de cadena]
lpData:string set
cbData:lpData La longitud de la cadena, esta longitud incluye caracteres chr (0).
Acerca de los posibles valores de dwType
Con estas funciones de operación del registro, podemos comenzar a definir tipos de archivos. En realidad, el proceso es muy sencillo.
1. Defina el archivo .abc en el registro, indicando que el tipo de archivo es el archivo de usuario "userfile"
2. Defina y abra este tipo de archivo en el "userfile". " del programa de archivos de registro (¡este es nuestro programa VB!).
El código fuente específico es el siguiente:
Sub Main()
Dim ret As Long, hKey As Long, ExePath As String
ret = RegCreateKey(HKEY_CLASSES_ROOT, ".abc", . hKey) ''''Definir archivo .abc
ret = RegSetValue(HKEY_CLASSES_ROOT, ".abc", REG_SZ, "userfile", 9) ''' 'Defina el tipo de archivo, preste atención al último dígito, que es el número de bytes de "userfile "+1
ret = RegCreateKey(HKEY_CLASSES_ROOT, "userfile", hKey) ''' ' define "archivo de usuario"
ret = RegCreateKey(HKEY_CLASSES_ROOT, "archivo de usuario", hKey) '''' p>
ret = RegCreateKey(HKEY_CLASSES_ROOT, "archivo de usuario\shell", hKey) ''' ' Defina su tipo, tenga en cuenta que el último número es byte "userfile" + 1
ret = RegCreateKey( HKEY_CLASSES_ROOT, "userfile\shell", hKey) hKey) '''' define su operación
ret = RegCreateKey(HKEY_CLASSES_ROOT, "userfile\shell\open", hKey) '''' especifica el nombre de la operación
ret = RegCreateKey(HKEY_CLASSES_ROOT, "userfile\shell\open\command" , hKey) ''''Definir la acción de la operación
ExePath = App.Path & "\" & App.EXEName & ".exe %1" ''''Obtener el nombre del programa VB
ret = RegSetValue(HKEY_CLASSES_ROOT, "userfile\shell\open\command", REG_SZ, ExePath, LenB(StrConv( ExePath, vbFromUnicode))
'''' El paso más crítico !Asociar la operación de apertura de "userfile" con nuestro programa
RegCloseKey hKey
End Sub