Cómo reproducir películas en segundo plano en vb
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
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> 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.