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.
.
.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".