Enviar una aplicación presionando las teclas con "SendMessage"(vb.net)
keystrokes (2)
Para simular una pulsación de tecla, necesitaría simular un evento de keydown y keyup, que sería lo que especifique en el campo Msg. (Use 256 para keydown y 257 para keyup). wParam y lParam son específicos del mensaje, por lo que para keyup y keydown, wParam sería el código clave ( consulte esta página para conocer los códigos hexadecimales) y lParam contiene otra información miscelánea ( consulte esta página ). En vb.net puedes usar un int32 para lParam. Por ejemplo, puede usar 0 para keydown y 65539 para keyup.
Ex:
SendMessage(New IntPtr(CurrentHandle), 256, KEYCODE, 0) - Keydown
SendMessage(New IntPtr(CurrentHandle), 257, KEYCODE, 65539) - Keyup
Hasta ahora, tengo todo el manejo de captura y configuración de GUI. Estoy perplejo en cuanto a cómo realizar el paso real.
Tengo este código:
SendMessage(New IntPtr(CurrentHandle), WHAT,GOES,HERE?)
He estado viendo: http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx y http://msdn.microsoft.com/en-us/library/ms644927 ( v = VS.85) .aspx # system_defined
Sin embargo, ninguno de estos proporciona mucho del método de "ejemplo de código" que necesito para aprender a hacerlo. Solo necesito enviar eventos clave como presionar "/" o "w", etc. No, no puedo usar sendkeys para esto.
¡Gracias si puedes ayudar!
http://msdn.microsoft.com/en-us/library/ms644950(v=vs.85).aspx
LRESULT WINAPI SendMessage(
__in HWND hWnd,
__in UINT Msg,
__in WPARAM wParam,
__in LPARAM lParam
);
hWnd - es el identificador de la ventana para enviar el mensaje. Msg - es el tipo de mensaje para enviar. WParam y lParam son esencialmente ''información''. El uso exacto dependerá del mensaje que está enviando.
¿En qué situación se encuentra que necesita usar SendMessage en lugar de SendKeys para emular pulsaciones de teclas? He usado SendMessage antes, pero siempre ha sido para los movimientos del mouse. .SendKeys () debería enviar la pulsación de tecla que le indique a la ventana activa.
Public Shared Sub ActivateWin()
Dim Win As Process = Process.GetProcessesByName("myWindow").First
AppActivate(Win.Id)
End Sub
He usado lo anterior inmediatamente antes de SendKeys () y siempre funcionó.
Si eso no funciona, o si desea usar SendMessage por el simple hecho de usar SendMessage; la documentación para el mensaje WM_KEYDOWN es lo que necesita. http://msdn.microsoft.com/en-us/library/ms646280(v=vs.85).aspx
Estará manipulando bits para crear el valor correcto de lParam.