list implementado el sistema de combinacion de teclas, estas fueron las modificaciones, quedo medio chanchada pero funciona bien.
Case WM_CHAR, WM_CONTEXTMENU
Dim Handle As Long
Handle = GetFocusHandle
If Handle <> 0 And tMSG.wParam <> vbKeyTab Then
PostMessage Handle, tMSG.uMsg, tMSG.wParam, tMSG.lParam
End If
Case WM_SYSKEYUP, WM_SYSKEYDOWN
If tMSG.uMsg = WM_SYSKEYDOWN Then
keybd_event tMSG.wParam, 0, KEYEVENTF_EXTENDEDKEY, 0
Else
keybd_event tMSG.wParam, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
Case WM_KEYDOWN, WM_KEYUP
Select Case tMSG.wParam
Case 112 To 123, 37 To 40, 92, vbKeyControl, vbKeyEscape, vbKeyScrollLock, vbKeyShift, vbKeySnapshot, vbKeyPause, vbKeyPrint, vbKeyTab, vbKeyReturn
If tMSG.wParam = vbKeySnapshot Then
keybd_event tMSG.wParam, 0, KEYEVENTF_EXTENDEDKEY, 0
End If
If tMSG.uMsg = WM_KEYDOWN Then
keybd_event tMSG.wParam, 0, KEYEVENTF_EXTENDEDKEY, 0
Else
keybd_event tMSG.wParam, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
Case Else
Handle = GetFocusHandle
If Handle <> 0 Then
SendMessage Handle, tMSG.uMsg, tMSG.wParam, tMSG.lParam
Else
If tMSG.uMsg = WM_KEYDOWN Then
keybd_event tMSG.wParam, 0, KEYEVENTF_EXTENDEDKEY, 0
Else
keybd_event tMSG.wParam, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
End If
End Select
El unico problema es que el formulario local tambien recibe ciertos comandos por ejemplo si pulsamos ALT + F4 este tambien se cierra. o la tecla de windows. pero bueno son cosas menores, lo malos es que podria llegar a quedar enganchada la tecla ALT (Izquierda del teclado) ya que nuestro formulario tiene menu y va a impedir un msg. y no es nada lindo si esto pasa.
la unica salida es hacer un hook al teclado e impedir mientras el picture tenga el foco que las teclas sean procesadas por windows (pc local).
Bue cha