Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: VanX en 17 Abril 2012, 18:50 pm



Título: VB 2008 - ayuda para insertar una tecla?
Publicado por: VanX en 17 Abril 2012, 18:50 pm
Buenas, he estado buscando en google pero no encuentro como que la aplicación de click a una tecla, que por ejemplo si estoy en un juego flash, de click a D para moverse a la derecha, gracias!


Título: Re: VB 2008 - ayuda para insertar una tecla?
Publicado por: kub0x en 18 Abril 2012, 12:49 pm
VanX cuanto tiempo sin verte por aquí, que tal vamos?

Lo que pides es enviar pulsaciones a una aplicación externa verdad? Bueno con la API SendMessage es posible, los parametros a pasar son el Handle de la ventana donde quieres enviar la pulsacion (API Findwindow), el mensaje de Windows , el caracter en HEX y un count (veces que quieres que se pulse).

He utilizado FindWindowEx y FindWindowByClass ya que para escribir en el Notepad necesitas obtener su ventana hija.

Te dejo un ejemplo:

Código
  1. Imports System.Runtime.InteropServices
  2.  
  3. Public Class Form1
  4.    Public Const WM_CHAR = &H102
  5.    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  6.    Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
  7.    End Function
  8.    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  9.    Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, _
  10.                      ByVal childAfter As IntPtr, _
  11.                      ByVal lclassName As String, _
  12.                      ByVal windowTitle As String) As IntPtr
  13.    End Function
  14.  
  15.    <DllImport("user32.dll", EntryPoint:="FindWindow", SetLastError:=True, CharSet:=CharSet.Auto)> _
  16.    Private Shared Function FindWindowByClass( _
  17.     ByVal lpClassName As String, _
  18.     ByVal zero As IntPtr) As IntPtr
  19.    End Function
  20.  
  21.    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  22.        Dim hWndPadre As IntPtr = FindWindowByClass("Notepad", IntPtr.Zero)
  23.        Dim Handle As IntPtr = FindWindowEx(hWndPadre, IntPtr.Zero, "Edit", Nothing)
  24.        SendMessage(Handle, WM_CHAR, &H4B, 5)
  25.    End Sub
  26. End Class
  27.  

Saludos.