Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: andrecid en 29 Julio 2015, 16:52 pm



Título: Como hacer que C# pulse una tecla por ti?
Publicado por: andrecid en 29 Julio 2015, 16:52 pm
Hola bueno pues como ya pudieron ver en el titulo.

Código:
 if(GetAsyncKeyState(Keys.F2) == -32767)
           {
               //Aquí el código para pulsar la tecla
             
           }

Muy bien con eso hago que c# pueda ver que tecla se pulso, pero yo quiero que c# pulse una tecla por mi

¿Cómo puedo hacerlo?


Título: Re: Como hacer que C# pulse una tecla por ti?
Publicado por: andrecid en 29 Julio 2015, 16:56 pm
Muy Bien ya encontré la respuesta la dejo por si alguien la busca.



Código:
SendKeys.Send("{A}");

Ok Modifico ese código lo que hace es enviar escrito pero no se envían las pulsaciones.Yo quiero que se envíen pulsaciones .


Título: Re: Como hacer que C# pulse una tecla por ti?
Publicado por: Eleкtro en 29 Julio 2015, 17:31 pm
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 (http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310%28v=vs.85%29.aspx)
        ( 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 (http://msdn.microsoft.com/en-us/library/windows/desktop/ms644950%28v=vs.85%29.aspx)
    Keyboard Input Notifications - MSDN (http://msdn.microsoft.com/en-us/library/windows/desktop/ff468861%28v=vs.85%29.aspx)
    Virtual-Key Codes - MSDN (https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731%28v=vs.85%29.aspx)
     
Pseudo-Código:
Código
  1. NativeMethods.SendMessage(hWnd:=Window, msg:=WM_KEYDOWN, wParam:=VK_KEYCODE, lParam:=IntPtr.Zero)

Saludos