Lista de teclas para enviar a otra ventana
-
Wednesday, March 23, 2011 4:39 PM
La pregunta es mas técnica que teórica, necesito usar el método SendMessage para enviar pulsaciones de teclas a otra ventana.
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);Se que en el 1º parámetro va el handle de la ventana, en el segundo, lo que se quiere hacer, en mi caso:WM_KEYDOWN.
Siendo const int WM_KEYDOWN = 0x0100;
Ahora las preguntas: ¿Existe una lista con todas las teclas? ¿Qué parámetro es el que acepta la tecla?
Encontre una lista pero es para visual basic, y no se cuales son las equivalencias.
Aquí la lista: http://msdn.microsoft.com/en-us/library/ms644950%28VS.85%29.aspx
Gracias por la ayuda.
All Replies
-
Wednesday, March 23, 2011 5:42 PMModerator
hola
porque no usas el
alli tienes la lista de teclas que puedes enviarsaludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marked As Answer by Eduardo PorteschellerMicrosoft Community Contributor, Moderator Tuesday, March 29, 2011 5:28 PM
-
Wednesday, March 23, 2011 7:42 PMSi, lo conozco, pero tengo el problema que tienen muchos con que no necesito que la ventana este activa, busqué y busqué y ya entendí como es que funciona este método, pero no se como se escriben las teclas a enviar.
-
Wednesday, March 23, 2011 8:06 PM
Seguí buscando y encontré algo que es lo que necesito, pero... está en VB xD.
Es un método de la api que se llama "SendMessageByNum" que acepta por parámetro el código ascii de la tecla a pulsar, pero al parecer es sólo para VB, si existe alguna equivalencia sería la solución creo.
Mientras tanto sigo buscando.
-
Wednesday, March 23, 2011 10:55 PM
Te sugiero que utilices la función PostMessage declarándola de esta manera:
[DllImport("user32.dll", SetLastError = true)] private static extern bool PostMessage(IntPtr hWnd, int Msg, System.Windows.Forms.Keys wParam, int lParam);De esta forma puedes utilizar el enum Keys definido en System.Windows.Forms, por ejemplo:
PostMessage(hWnd, WM_KEYDOWN, Keys.D7, 0); PostMessage(hWnd, WM_KEYDOWN, Keys.Escape, 0);Suerte !
Federico Colombo. http://thepiratblog.blogspot.com
Federico Daniel Colombo- Marked As Answer by Eduardo PorteschellerMicrosoft Community Contributor, Moderator Tuesday, March 29, 2011 5:28 PM
-
Thursday, March 24, 2011 5:50 AM
la respuesta mas sencilla :P
siempre hay alguna otra api que soluciona todo, gracias!

