Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo reproducir películas en segundo plano en vb

Cómo reproducir películas en segundo plano en vb

Como es difícil incrustar el reproductor en el escritorio, cambiemos la idea:

En los eventos de mouse y teclado, usa showwindow para ocultar el reproductor (no te preocupes, no es lo que piensas), y cambie el foco Vaya al formulario o escritorio con el foco anterior. En este momento, los elementos del mouse y el teclado deben estar bloqueados, por lo que necesitamos usar StartMaskKey, pero nuestro propósito no es realmente evitar que ocurra el evento, sino solo. Las cosas bloqueadas temporalmente deben dejar que la DLL las maneje. Mientras la DLL no devuelva un valor, no permitirá que ocurra el evento, por lo que tenemos que usar la devolución de llamada de la función AddressOf. Las devoluciones de llamada están todas en la operación, su operación no es diferente de la habitual.

Luego use el control del temporizador para verificar la ocurrencia del mouse y el teclado. Si no ocurre ningún evento, el reproductor y la recepción se mostrarán inmediatamente. /p>

De esta manera, siempre que su computadora sea lo suficientemente rápida, durante El parpadeo es imperceptible para el ojo humano. Se estima que la configuración general parpadeará un poco y no habrá gran problema. es una antigüedad de hace N años, ni siquiera quiero pensar en ello... ..

El siguiente es el mensaje de código del programa principal. Eche un vistazo, básicamente está expandido. usando esto:

'Agregue dos CommandButtons al formulario y cámbieles el nombre respectivamente a cmdStartMask y cmdStopMask)

Opción explícita

Función de declaración privada StartMaskKey Lib "MaskKey. " (lpdwVirtualKey Mientras, ByVal nLength Mientras, ByVal lpfnKeyboarProc Mientras, Opcional ByVal bDisableKeyboard Como Booleano = False) Mientras

Función de declaración privada StopMaskKey Lib "MaskKey" () Mientras

Private Sub cmdStartMask_ Click()

' Máscara A, B, C, Arriba, Abajo, Izquierda y dos teclas Win

Tecla atenuada (8) Siempre

clave(0) = vbKeyA

clave(1) = vbKeyB

clave(2) = vbKeyC

clave( 3) = vbKeyLeft

clave(4) = vbKeyRight

clave( 5) = vbKeyUp

clave(6) = vbKeyDown

clave(7) = amp H5B 'Tecla de ganancia izquierda

tecla (8) = amp H5C 'Tecla de ganancia derecha

Tecla StartMaskKey (0), UBound(clave) 1, Dirección de KeyboardProc

End Sub

Private Sub cmdStopMask_Click()

StopMaskKey

End Sub

El código del módulo de formulario es casi Lo mismo que la rutina anterior, excepto que hay un parámetro más al llamar a la función StartMaskKey, a saber, AddressOf KeyboardProc.

Este parámetro es un operador unario, seguido de un nombre de función, cuya función es obtener un puntero a la función especificada. Pero debe tenerse en cuenta que la función de devolución de llamada (KeyboardProc en este ejemplo) debe escribirse en el módulo estándar de VB. El código del módulo estándar es el siguiente: H105

Tipo público KBDLLHOOKSTRUCT

vkCode As Long ' Código de clave virtual (1--254)

scanCode As Long ' Código de escaneo de clave de hardware

banderas As Long ' Banderas

tiempo Como Long ' Marca de tiempo del mensaje

dwExtraInfo As Long 'Información adicional

Tipo de finalización

Enumeración pública KEYACTION

ACTION_KEYDOWN = WM_KEYDOWN

ACTION_KEYUP = WM_KEYUP

ACTION_SYSKEYDOWN = WM_SYSKEYDOWN

ACTION_SYSKEYUP = WM_SYSKEYUP

End Enum

' Función de devolución de llamada de enlace de teclado global p>

' Parámetros: la acción identifica la información del teclado (presionada, levantada), keyStruct contiene información clave

' keyStruct contiene información clave

Función pública KeyboardProc (acción ByVal como KEYACTION, keyStruct como KBDLLHOOKSTRUCT) como booleano

Seleccionar acción de caso

Caso ACTION_KEYDOWN

Depurar.Imprimir keyStruct.vkCode, "Presionar tecla del teclado"

Caso ACTION_KEYUP

Debug.vkCode, "Tecla de teclado emergente"

Caso ACTION_SYSKEYDOWN

Caso ACTION_SYSKEYUP

Finalizar selección

'Devuelve True para continuar con el mensaje clave

'Devuelve False para finalizar el mensaje clave

KeyboardProc = False

Finalizar función

' ¿Existe alguna función de mapeo de mensajes MFC en este módulo estándar de VB KeyboardProc? Tenga en cuenta que las funciones de devolución de llamada de VB deben escribirse en módulos estándar. Las personas cuidadosas también pueden encontrar que procesé un poco los parámetros de acción y los cambié a tipos de enumeración. Esto es principalmente para facilitar la comprensión.