Saludos tengo un proyecto el cual es hacer que se ejecute su pantalla completa, y se desactive el fullScreen con cualquier presion de tecla, si llego a activar la pantalla completa, pero al momento de desactivar la pantalla completa si funciona con algunas teclas, menos con los f1-f2 mas los siguiente y las fechas de direccion, cuando presiono las fechas de direccion deshabilita las teclas que si sirven he ahi cuando pierdo el control del programa, alguien me puede ayudar para desactivar el fullScreen con todas las teclas del teclado y no me creé esos errores.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
AxWindowsMediaPlayer1.URL = Label1.Text
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.F5 Then
Me.AxWindowsMediaPlayer1.fullScreen = True
End If
End Sub
Private Sub AxWindowsMediaPlayer1_KeyDownEvent(ByVal sender As Object, ByVal e As AxWMPLib._WMPOCXEvents_KeyDownEvent) Handles AxWindowsMediaPlayer1.KeyDownEvent
Me.AxWindowsMediaPlayer1.fullScreen = False
End Sub
De entrada el tema debías haberlo puesto en el foro de NET.
Aunque estés importando un control Activex de vb6, estás operando en NET.
...de entrada usas (en ambos casos) el evento keydown, claramente sería mejor al menos el KeyUp y aún mejor el Click e inmejorablemente el dobleclick... dejando el clik para play/pausa.
Además para ponerlo en pantalla completa estás usando el propio formulario... si no tienes más objetos que el control WMP, vale pero si no... todavía estás pasándolo a pantalla completa pero solo si pulsas F5, pero no es coherente, sí o sí fuerzas pantalla completa... y para regeresar de ella, debes hacerlo pisando el control... tampoco es coherente...
Yo modificaría el código... de esta manera:
Con doble click, sólo si está en play o pausa, cambia el estado de pantalla completa (al otro estado).
Private Sub Form1_DoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.DoubleClick, Handles wmp.DoubleClickEvent
If ((Wmp.playState = wmppsPlaying) or (Wmp.playState = wmppsPaused)) Then
'if (wmp.fullScreen = false) then
' wmp.fullScreen = True
'else
' wmp.fullScreen = false
'en if
wmp.fullScreen = not (wmp.fullScreen) ' más breve y claro, alternamos el estado cuandos e pulsa doble click.
End If
End Sub
Y dejaría el evento KeyUp para cuestiones específicas... incluso pantalla completa si se pulsa la letra F
Si solo vas a usar Play-pausa, mejor usar el evento click, para alternar entre ambos estados. en esta pieza de código se usa el evento KeyUp...
Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp, Handles wmp.KeyUpEvent
Select Case e.KeyCode
Case Keys.Space, keys.Pause
If Wmp.playState = wmppsPlaying Then
Wmp.Controls.pause
Elseif ((Wmp.playState = wmppsPaused) oralso (Wmp.playState = mppsStopped)Then
if (wmp.url.length >0) then
Wmp.Controls.play
end if
End if
Case Keys.Clear, Keys.Delete
Wmp.Controls.stop
case keys.Escape
Wmp.Controls.stop
if (wmp.fullScreen = True) then wmp.fullScreen = False
case keys.F
wmp.fullScreen = not (wmp.fullScreen)
' otros casos a considerar... por ejemplo, manejar volumen, pasar a la siguiente pista en la lista de reproducción (keys.PageDown) o previa (keys.pageUp), etc...
End select
End sub
- Nota que las constantes las he puesto de memoria, es posible que se llamen de otra manera, especialmente al importarlo a NET... el wrapper, las haya modificado.
- Donde proceda coloca el conveniente try...catch...
- Por último, nota también que yo he preferido abreviar el nombre desde: AxWindowsMediaPlayer1 a wmp, luego si copias cambia donde proceda...
Cita de: CAEL20 en 8 Diciembre 2017, 22:43 PM
al momento de desactivar la pantalla completa si funciona con algunas teclas, menos con los f1-f2 mas los siguiente y las fechas de direccion, cuando presiono las fechas de direccion deshabilita las teclas que si sirven he ahi cuando pierdo el control del programa, alguien me puede ayudar para desactivar el fullScreen con todas las teclas del teclado y no me creé esos errores.
Es normal, ciertas teclas de control de navegación son "suprimidas" por defecto en el evento
KeyDown, puesto que son controladas por el control (y los controles hijo del control) y en teoría no las deberías controlar tú (como las teclas de dirección) ya que en principio no deberías alterar el funcionamiento esperado del control. Sobre esto ya te habló el compañero NEBIRE de forma mucho más detallada.
De todas formas, si realmente quieres hacerlo de esa manera entonces el evento que pareces estar buscando sería
AxWindowsMediaPlayer.PreviewKeyDown:
''' <summary>
''' Occurs before the <see cref="AxWindowsMediaPlayer.KeyDown"/> event when a key is pressed while focus is on this control.
''' </summary>
''' <param name="sender">
''' The source of the event.
''' </param>
''' <param name="e">
''' The <see cref="PreviewKeyDownEventArgs"/> instance containing the event data.
''' </param>
Private Sub AxWindowsMediaPlayer1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles AxWindowsMediaPlayer1.PreviewKeyDown
Dim wmp As AxWindowsMediaPlayer = DirectCast(sender, AxWindowsMediaPlayer)
If (wmp.fullScreen) Then
wmp.fullScreen = False
End If
End Sub
Saludos.