Puedes probar registrando una tecla para tu aplicación (HotKey) de manera que cuando se pulse tu aplicación responda adecuadamente.
Veamos, aquí te proporciono el código fuente necesario.
Crea un nuevo módulo llamado modHotKey.bas.
Pega lo siguiente:
'CÓDIGO FUENTE modHotKey.BAS -------------------------------------------------
'--------------------
'Registrar HotKeys
'--------------------
Public Const WH_KEYBOARD = 2
Public Const VK_F6 = 117
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public hHook As Long
Public Function KeyboardProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'Si idHook es menor que 0, continuar
If idHook < 0 Then
'Llamar al siguiente Hook
KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
Else
If (GetKeyState(VK_F6) And &HF0000000) Then
' --------- Código para cerrar el reproductor --------------
MsgBox "Reproductor cerrado"
End If
'Llamar al siguiente Hook
KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
End If
End Function
'CÓDIGO FUENTE modHotKey.BAS -------------------------------------------------
Y ahora, para usarlo, en el formulario principal de la aplicación (o donde necesites usarlo).
'CODIGO FUENTE formulario ------------------------------------------
'En el evento Load registramos el HotKey.
Private Sub Form_Load()
'Registramos el HotKey
hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, App.hInstance, App.ThreadID)
End Sub
'Y en el QueryUnload lo destruimos:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'Destruimos el HotKey previamente registrado al cerrar el formulario principal (cerrar aplicación)
UnhookWindowsHookEx hHook
End Sub
'CODIGO FUENTE formulario ------------------------------------------
Véase que la tecla a la que responde el HotKey se encuentra en la condición del procedimiento KeyboardProc del módulo añadido:
If (GetKeyState(VK_F6) And &HF0000000) Then
Esto comprueba si la tecla F6 ha sido pulsada.
Si es así, se procede de acuerdo con ello.
Si deseas utilizar combinaciones de teclas, en lugar de una tecla sola, por ejemplo Shift y otra tecla a la vez, deberás utilizar el argumento wParam.
En él se guarda esa segunda tecla.
Por ejemplo, esta sería la condición si quisiéramos responder a SHIFT + E:
Declaramos las constantes de tecla necesarias:
Public Const VK_SHIFT = &H10
Public Const VK_E = 83
Y cambiamos la condición.
If (GetKeyState(VK_SHIFT) And &HF0000000) Then
If wParam = VK_E Then
' ------------ Código necesario --------------
End If
End If
Espero que te sirva.
Hasta otra,
Zoto