Red de conocimiento informático - Aprendizaje de código fuente - ¿Cómo sabe Yi Language si el teléfono móvil está conectado a la computadora o desconectado?

¿Cómo sabe Yi Language si el teléfono móvil está conectado a la computadora o desconectado?

Generalmente, cuando se inserta un teléfono móvil, se mostrará la unidad H o algo más.

Solo usted puede determinar si la unidad H existe.

El siguiente es el código para obtener el evento de inserción o eliminación del disco U, incluidos comandos dll y constantes de tipo personalizado.

.Versión 2

.Ventana de ensamblaje ensamblaje 1

.Variable de ensamblaje a, puntero de subrutina

.Subrutina __Ventana de inicio_Creación completada

. p>

a = SetWindowLong (_Ventana de inicio. Obtener identificador de ventana (), -4, amp; MsgProc)

Subrutina MsgProc, entero

.Parámetro hwnd, tipo entero.

.Parámetro msg, tipo entero

.Parámetro wp, tipo entero

.Parámetro lp, tipo entero

Variable local val. , PDEV_BROADCAST_VOLUME

Variable local i, tipo entero

Máscara de variable local, tipo entero

Se inicia el juicio (msg = 537). p> .El juicio comienza (wp = #DBT_DEVICERARRIVAL) 'Insertar dispositivo

Copiar estructura (val, lp, 14)

.Si es verdadero (val.dbcv_devicetype = #DBT_DEVTYP_VOLUME)

máscara = val.dbcv_unitmask

.Cabeza de bucle variable (0, 25, 1, i)

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

salir del bucle()

.if true end

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

.Variable loop tail()

Cuadro de edición 1. Agregue texto ("Se inserta un disco USB, letra de unidad:" + caracteres (65 + i) + #salto de línea)

Detectar (Carácter (65 + i))

. Si es verdadero

Juez (wp = #DBT_DEVICEREMOVECOMPLETE) ' Eliminar dispositivo

Copiar estructura (val, lp, 14). )

.si es verdadero (val.dbcv_devicetype = #DBT_DEVTYP_VOLUME)

máscara = val.dbcv_unitmask

.cabezal de bucle variable (0, 25, 1, i )

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

Saltar fuera del bucle ()

.Finalizar si es verdadero

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

.Cola de bucle variable()

Cuadro de edición 1. Agregue texto (" Se extrae el disco USB, letra de unidad: " + caracteres (65 + i) + # carácter de nueva línea)

. Si es verdadero, finaliza

. Predeterminado

. Fin del juicio

<

p>.Default

.Fin del juicio

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

.Subrutina__ventana de inicio _será destruida

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

Detección de subrutina

. Parámetros Letra de unidad, tipo de texto<. /p>

Variable local fn, tipo de texto

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

Cuadro de edición 2. Contenido =. “”

Determine el comienzo del bucle (fn ≠ “”)

Cuadro de edición 2. Agregue texto (fn + #salto de línea)

fn. = Buscar archivo (, )

Determinar el final del ciclo ()

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

.Tipo de datos PDEV_BROADCAST_VOLUME

.Miembro dbcv_size, tipo entero, , , 14

.Miembro dbcv_devicetype, tipo entero

.Miembro dbcv_reserved, tipo entero

.Miembro dbcv_unitmask, tipo entero

.Miembro dbcv_flags, tipo entero corto

.Tipo de datos_DEV_BROADCAST_HDR

.Miembro dbch_size, tipo entero

.Miembro dbch_devicetype, tipo entero

.Miembro dbch_reserved, tipo entero

≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈constante≈≈≈≈ ≈≈≈≈≈≈≈≈≈ ≈≈≈≈

Constante WM_DEVICECHANGE, "537", , se cambia la letra de la unidad

Constante DBT_DEVICEREMOVECOMPLETE, "32772"

.Constante DBT_DEVICERARRIVAL, "32768"<. /p>

.Constante DBT_DEVTYP_OEM, "0"

.Constante DBT_DEVTYP_DEVNODE, "1"

.Constante DBT_DEVTYP_VOLUME, "2"

. DBT_DEVTYP_PORT, "3"

Constante DBT_DEVTYP_N, "4"

.