Yo quiero que se envíen pulsaciones.
¿A la misma aplicación .Net, a la ventana que esté activa, o a cualquier ventana (activa o inactiva indiferentemente)?.
Hay una gran diferencia y cada una requiere una elaboración distinta.
- Para enviar pulsaciones a la aplicación donde corre tu código obviamente solo tienes que activar la ventana de la app y pulsar las teclas, luego puedes procesar "X" acción según la tecla pulsada suscribiéndote al evento Form.KeyDown o Form.KeyPress.
- Para enviar pulsaciones a la aplicación que esté activa, es decir, la que tenga el foco, primero debes hallar su HWND (el handle de la ventana), por último puedes usar las funciones de la API de Windows.
➢ SendInput function - MSDN
( No utilices la función keybd_event, que aunque sea más sencillo, está obsoleta. )
- Para enviar pulsaciones a cualquier aplicación, esté activa o inactiva, primero debes hallar el HWND (el handle de la ventana) a la que le quieres enviar pulsaciones,
y por último utilizar la función SendMessage de la API de windows para postear el mensaje WM_KEYDOWN (256) o WM_CHAR (258) respectivamente de lo que pretendas enviar.
➢ SendMessage function - MSDN
➢ Keyboard Input Notifications - MSDN
➢ Virtual-Key Codes - MSDN
Pseudo-Código:
NativeMethods.SendMessage(hWnd:=Window, msg:=WM_KEYDOWN, wParam:=VK_KEYCODE, lParam:=IntPtr.Zero)
Saludos