Red de conocimiento informático - Aprendizaje de código fuente - Descifra fácilmente el código fuente

Descifra fácilmente el código fuente

El siguiente es el código para obtener el evento de inserción o extracción del disco USB, incluidos los comandos dll y las constantes de tipo personalizado. Si no lo entiendes, escribe tu dirección de correo electrónico y te lo enviaré.

.

Versión 2

. Conjunto ventana conjunto 1

. Variable de ensamblaje a, puntero de subrutina

. Subrutina_ _Ventana de inicio_ Creada

A = setwindowlong (_Ventana de inicio. Obtener identificador de ventana (), -4,; MsgProc)

. Subrutina MsgProc, tipo entero

. Parámetro hwnd, tipo entero

Parámetro mensaje, tipo entero

Parámetro wp, tipo entero

Parámetro lp, tipo entero

. Valor de variable local, PDEV_broadcast_volume.

. Variable local I, tipo entero.

. Máscara de variable local, tipo entero

. Empieza a juzgar (msg = 537)

. Inicio del juicio (WP = # dbt _ devicerarrival) 'Insertar dispositivo.

Copiar estructura(val, lp, 14)

. si es verdadero(val . dbcv _ tipo de dispositivo = # dbt _ dev typ _ volumen)

máscara = val.dbcv_unitmask

. Encabezado de bucle variable (0, 25, 1, I)

Si es verdadero (Y bit a bit (máscara, 1) = 1)

Salir del bucle ()

Si realmente se acabó.

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

. Cola de bucle variable()

Cuadro de edición 1. Agregue texto ("Se ha insertado disco U, letra de unidad: "Carácter (65 I) #nueva línea").

Detectar (Carácter (65 I))

Si realmente es así over

Juez (WP = # DBT _Eliminación del dispositivo completada)

Copiar estructura (val, lp, 14)

true(val . dbcv _ tipo de dispositivo = # dbt _ dev typ _ volume)

mask = val.dbcv_unitmask

Encabezado de bucle variable (0, 25, 1, I

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

Salir del bucle()

Si es verdadero

Máscara = Desplazar a la derecha (Máscara, 1)

.Cola de bucle variable()

Agregar texto ("El disco USB está desconectado, letra de unidad: "Char(65I)#newline").

Si realmente se acabó.

. Predeterminado

La prueba finaliza

. Predeterminado

Fin de prueba

Regreso (procedimiento de ventana de llamada (a, hwnd, msg, WP, LP))

Subrutina__Ventana de inicio_se destruirá.

A = setwindowlong (_Iniciar ventana. Obtener identificador de ventana (), -4, a).

Detección de subrutinas

Letras de parámetros, tipo de texto

. Variable local fn, tipo de texto

Fn = Buscar archivo (letra de unidad ":\*).*",)

Cuadro de edición 2. contenido = " "

. Determine el cabezal del bucle (fn≦);

Cuadro de edición 2. Agregar texto(fn #newline)

Fn = buscar archivo(,)

.

Determinar el final del ciclo ()

≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ ≈ͬͬͬͬͬͬ8

. Tipo de datos PDEV_broadcast_volume

Miembro dbcv_size, tipo entero,,,14.

. Miembro dbcv_devicetype, tipo entero.

. Miembro dbcv_reserved, entero.

. Miembro dbcv_unitmask, tipo entero.

. Miembro dbcv_flags, tipo entero corto.

. Tipo de datos_desarrollo_transmisión_HDR

. Miembro dbch_size, entero.

. Miembro dbch_devicetype, tipo entero.

. Miembro dbch_reserved, entero.

≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ ≈≈ͬͬͬͬͬ

Constante WM_DEVICECHANGE, "537", se cambió la letra de la unidad.

. Constante dbt_deviceremovecommplete, " 32772 "

. const dbt_device rar oponente, "32768"

. Constante DBT_DevelopmentType_OEM, " 0 "

. Constante DBT_DevelopmentType_DevelopmentNode, " 1 "

. Constante DBT_DevelopmentType_Volume, " 2 "

. Const DBT_DevelopmentType_Port, "3"

. Constante DBT_DevelopmentType_N,"4"