Red de conocimiento informático - Aprendizaje de código fuente - Utilice un lenguaje sencillo para detectar la inserción del disco USB y obtener la letra de la unidad de disco. Encuentre el método, preferiblemente el código fuente.

Utilice un lenguaje sencillo para detectar la inserción del disco USB y obtener la letra de la unidad de disco. Encuentre el método, preferiblemente el código fuente.

El siguiente es el código para obtener el evento de inserción o eliminación del disco USB, que contiene comandos dll y constantes de tipo personalizado. Si no lo entiendes del todo, por favor completa tu correo electrónico y te lo enviaré.

.

.Versión 2

.Ventana de ensamblaje ensamblaje 1

.Variable de ensamblaje a, puntero de subrutina

p>

. Subrutina __StartWindow_Created

a = SetWindowLong (_StartWindow.TakeWindowHandle().TakeWindowHandle(), -4, amp; MsgProc)

. /p>

. Parámetro hwnd, entero

. Mensaje de parámetro, número entero

. Parámetro wp, número entero

. Parámetro lp, número entero

. Valor de variable local, PDEV_BROADCAST_VOLUME

. Variable local i, número entero

. Máscara de variable local, número entero

. Comienza el juicio (msg = 537)

. OK inicio (wp = #DBT_DEVICERARRIVAL) ' Insertar dispositivo

Copiar estructura (val, lp, 14)

Si es verdadero (val.dbcv_devicetype = #DBT_DEVTYP_VOLUME)

máscara = val.dbcv_unitmask

. Primero recorra la variable (0, 25, 1, i)

. Si es verdadero (bit con (máscara, 1) = 1)<. /p>

Saltar del bucle ()

.Finalizar si es verdadero

máscara = desplazamiento a la derecha (máscara, 1)

.Bucle variable end ()

Cuadro de edición 1. Agregue texto ("Disco USB insertado, código de disco:" caracteres (65 i) # carácter de nueva línea)

Detectar (caracteres (65 i))

p>

.End if true

.OK(wp = #DBT_DEVICEREMOVECOMPLETE) ' Eliminar dispositivo

Copiar estructura (val, lp, 14)

.if true (val.dbcv_devicetype = #DBT_DEVTYP_VOLUME)

mask = val.dbcv_unitmask

.Primero repite las variables (0, 25, 1, i )

.Si es verdadero (bit con (máscara, 1) = 1)

Salir del bucle ()

.Finalizar si es verdadero

máscara = desplazamiento hacia la derecha (máscara, 1)

.Fin de bucle variable ()

Cuadro de edición 1. Agregue texto ("El disco USB se ha desconectado, código de disco: " caracteres (65 i) # avance de línea)

.Si es verdadero final

.Predeterminado

.

Si el juicio finaliza

. Default

Fin del juicio

Return (CallWindowProc (a, hwnd, msg, wp, lp))

.La subrutina __StartupWindow_ será destruida

a = SetWindowLong(_StartupWindow.TakeWindowHandle(), -4, a)

. Detección de subrutinas

. Parámetros disco, tipo de texto

Variable local fn, tipo de texto

fn = buscar archivo (disco ":\*. *", )

Cuadro de edición 2. Determine el cabezal del bucle (fn≠"")

Cuadro de edición 2. Agregar texto (fn # nueva línea)

fn = buscar archivo (, )

Determinar el final del ciclo ()

≈≈≈≈≈≈. ≈≈≈ ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ Tipo personalizado≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ ≈≈≈≈≈

.Tipo de datos PDEV_BROADCAST_VOLUME

.Miembro dbcv_size, entero, , , 14

.Miembro dbcv_devicetype, entero

. Miembro dbcv_reserved, entero

. Miembro dbcv_unitmask, entero

Miembro dbcv_flags, int corto

. Tipo de datos_DEV_BROADCAST_HDR

.Miembro dbch_size, entero

.Miembro dbch_devicetype, entero

.Miembro dbch_reserved, tipo entero

≈≈ ≈≈ ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ Constante≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ ≈≈≈≈≈≈≈≈≈ ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ ≈≈≈≈≈≈≈≈≈p > .Constant WM_DEVICECHANGE, "537", , La unidad de disco ha cambiado

.Constant DBT_DEVICEREMOVECOMPLETE, "32772"

.Constant DBT_DEVICERARRIVAL, "32768"

. Constante DBT_DEVTYP_OEM, "0"

. Constante DBT_DEVTYP_DEVNODE, "1"

. Constante DBT_DEVTYP_VOLUME, "2"

. Constante DBT_DEVTYP_PORT, "3"

. Constante DBT_DEVTYP_N, "4".