Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo utilizar VB para implementar la asociación de archivos?

¿Cómo utilizar VB para implementar la asociación de archivos?

H80000001

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