none
Lista de teclas para enviar a otra ventana

    Pregunta

  • 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.

    miércoles, 23 de marzo de 2011 16:39

Respuestas

Todas las respuestas

  • hola

    porque no usas el

    alli tienes la lista de teclas que puedes enviar
    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 23 de marzo de 2011 17:42
  • Si, 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.
    miércoles, 23 de marzo de 2011 19:42
  • 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.

    miércoles, 23 de marzo de 2011 20:06
  • 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
    miércoles, 23 de marzo de 2011 22:55
  • la respuesta mas sencilla :P

    siempre hay alguna otra api que soluciona todo, gracias!

    jueves, 24 de marzo de 2011 5:50