elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  SendMessage Ayuda!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: SendMessage Ayuda!  (Leído 6,190 veces)
Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
SendMessage Ayuda!
« en: 5 Octubre 2009, 02:04 am »

Hice un Auto Login para un juego en linea dejo de funcionar por algo que no explicare porque seria muy largo de hacer, el punto es que necesito usar SendMessage para enviar pulsasciones del teclado y del mouse he investigado mucho pero mucho al parecer todo esta como deberia pero aun así no funciona nada y eso me hace querer pegarle con martillo a la PC xD, en serio quisiera que me ayudaran :-(
Aqui les va todo:

Declaración API's y Constantes:
Código
  1.     'Keyboards Events Consts
  2.    Const WM_KEYDOWN As Integer = &H100
  3.    Const WM_KEYUP As Integer = &H101
  4.    Const WM_CHAR As Integer = &H102
  5.  
  6.    Const WM_LBUTTONDOWN As Integer = &H201
  7.    Const WM_LBUTTONUP As Integer = &H202
  8.  
  9. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
  10.    (ByVal hWnd As Integer, ByVal wMsg As Integer, _
  11.    ByVal wParam As Integer, ByVal lParam As Integer) As Integer

Funciones:
Código
  1. 'Enviar Texto a una Ventana
  2. Public Sub SendString(ByVal mHandle As Integer, ByVal str As String)
  3.        For Each i As String In str
  4.            SendMessage(mHandle, WM_KEYDOWN, Asc(i), 0)
  5.            SendMessage(mHandle, WM_KEYUP, Asc(i), 0)
  6.        Next
  7.    End Sub
  8.  
  9. 'Enviar Tecla (ENTER, ESC, UP, DOWN, ETC...) a una Ventana
  10. Public Sub SendKey(ByVal mHandle As Integer, ByVal Key As Keys)
  11.            SendMessage(mHandle, WM_KEYDOWN, key, 0)
  12.            SendMessage(mHandle, WM_KEYUP, key, 0)
  13.    End Sub
  14.  

Código
  1. 'Funciones para Crear lParam de SendMessage
  2. Public Function MAKELPARAM(ByVal wLow As Integer, ByVal wHigh As Integer) As Integer
  3.        Return LoWord(wLow) Or (&H10000 * LoWord(wHigh))
  4.    End Function
  5.  
  6.    Public Function LoWord(ByVal lDWord As Integer) As Integer
  7.        If lDWord And &H8000& Then
  8.            LoWord = lDWord Or &HFFFF0000
  9.        Else
  10.            LoWord = lDWord And &HFFFF&
  11.        End If
  12.    End Function

Código
  1. 'Enviar Clicks a Ventana
  2. Public Sub SendClick(Byval mHandle as Integer,  Byval XY As Point)
  3.        SendMessage(WM_LBUTTONUP, 0, 0)
  4.        Dim lpara As Integer = MAKELPARAM(XY.X, XY.Y)
  5.        SendMessage(WM_LBUTTONDOWN, 0, lpara)
  6.        SendMessage(WM_LBUTTONUP, 0, lpara)
  7.    End Sub

Gracias por adenlantado  ;-)


« Última modificación: 5 Octubre 2009, 15:46 pm por Keyen Night » En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: SendMessage Ayuda!
« Respuesta #1 en: 5 Octubre 2009, 23:23 pm »

Pero cual es el problema? no especificas XD.....


En línea

Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: SendMessage Ayuda!
« Respuesta #2 en: 6 Octubre 2009, 01:04 am »

El problema es que no pasa nada, los sub no hacen nada, nada hace nada, creo que tiene que ver con las declaraciones "As XXX" debe haber un tipo/clase que no soporte el net creo porque traduci el codigo a C# y lo probe y funciona perfectamente no puede funcionar mejor... :-\
Pero el programa lo tengo en net y no se mucho de C# para traducir todo el proyecto...

Lo que tambien me podria servir es que me expliquen un poco como hacer un DLL con C# para usarla en net, esa seria otra solución...
En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: SendMessage Ayuda!
« Respuesta #3 en: 6 Octubre 2009, 01:50 am »

Hola, no entendi nada, para pasarlo en limpio ¿ vos queres hacer click en una parte determinada de la pantalla?

saludos.
En línea

Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: SendMessage Ayuda!
« Respuesta #4 en: 6 Octubre 2009, 16:13 pm »

Más facil, porque creo que no me han entendido; necesito usar SendMessage para enviar una serie de pulsaciones de teclas y clicks para hacer un auto login para un juego online; el problema es que el codigo no sirve pero al traducirlo a C# funciono perfectamente pero necesito hacerlo en net porque no se mucho de C#
En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: SendMessage Ayuda!
« Respuesta #5 en: 6 Octubre 2009, 18:58 pm »

pero al traducirlo a C# funciono perfectamente pero necesito hacerlo en net porque no se mucho de C#
C# es .net !!!
Vos lo que queres es el codigo en visual basic .net (no?). Postea el codigo en C# y sera mas facil traducirlo (ya que no necesitaremos experimentar con las conversiones y ni otras clases extra, solo simple traduccion)
En línea

Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: SendMessage Ayuda!
« Respuesta #6 en: 7 Octubre 2009, 17:55 pm »

Aqui está el codigo completo en C# es una dll y el juego se llama "Tibia"
Código:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;
using Microsoft.VisualBasic;
using System.Security.Principal;
using System.IO;

namespace Tibia
{
    public class Logger
    {
 [DllImport("user32.dll")]
        public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);

        [DllImport("user32.dll", SetLastError = true)]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

        [DllImport("user32.dll")]
        public static extern bool SetForegroundWindow(IntPtr hWnd);

        [DllImport("user32.dll")]
        public static extern bool ShowWindow(IntPtr hWnd, int nCmd);

         const int SW_HIDE = 0;
         const int SW_SHOWNORMAL = 1;
         const int SW_SHOWMINIMIZED = 2;
         const int SW_SHOWMAXIMIZED = 3;
         const int SW_SHOWNOACTIVATE = 4;
         const int SW_SHOW = 5;
         const int SW_MINIMIZE = 6;
         const int SW_SHOWMINNOACTIVE = 7;
         const int SW_SHOWNA = 8;
         const int SW_RESTORE = 9;
         const int SW_SHOWDEFAULT = 10;
         const int WM_KEYDOWN = 0x0100;
         const int WM_KEYUP = 0x0101;
         const int WM_CHAR = 0x0102;
         const int WM_LBUTTONDOWN = 0x201;
         const int WM_LBUTTONUP = 0x202;

         public static int MakeLParam(int LoWord, int HiWord)
         {
             return ((HiWord << 16) | (LoWord & 0xffff));
         }

         public static int MakeWParam(int LoWord, int HiWord)
         {
             return ((HiWord << 16) | (LoWord & 0xffff));
         }

        public void SendKey(IntPtr mHandle, Int32 key)
        {
            SendMessage(mHandle, WM_KEYDOWN, (int)key, 0);
            SendMessage(mHandle, WM_CHAR, (int)key, 0);
            SendMessage(mHandle, WM_KEYUP, (int)key, 0);
        }

        public void SendClick(IntPtr mHandle, int X, int Y)
        {
            SendMessage(mHandle, WM_LBUTTONUP, 0, 0);
            int lpara = MakeLParam(X, Y);
            SendMessage(mHandle, WM_LBUTTONDOWN, 0, lpara);
            SendMessage(mHandle, WM_LBUTTONUP, 0, lpara);
        }

        public void SendString(IntPtr mHandle, string s)
        {
            foreach (var c in s)
                SendKey(mHandle, Convert.ToInt32(c));
        }

        public IntPtr GetHwnd()
        {
            return FindWindow("TibiaClient", "Tibia");
        }

       public bool isRuning(string mProcess){return Convert.ToBoolean(Process.GetProcessesByName(mProcess).Length);}

        public void OpenTibia()
        {
            if (!isRuning("Tibia"))
            {
                string TibiaPath = Environment.GetEnvironmentVariable("ProgramFiles") + "\\Tibia";
                string PathRestorer = Environment.CurrentDirectory;
                Process Tibia = new Process();
                if (Directory.Exists(TibiaPath)) { Environment.CurrentDirectory = TibiaPath; }
                if (File.Exists(TibiaPath + "\\Tibia.exe")) { Tibia = Process.Start(TibiaPath + "\\Tibia.exe"); }
                Environment.CurrentDirectory = PathRestorer;
                TibiaPath = string.Empty;
                PathRestorer = string.Empty;
                int Wait = 5;
                while (FindWindow("TibiaClient", "Tibia") == (IntPtr)0)
                {
                    Thread.Sleep(1000); --Wait;
                    if (Wait == 0) { break; }
                }
            }
        }

        public void Login(string account, string password)
        {
            OpenTibia();
            ShowWindow(GetHwnd(), SW_SHOWMAXIMIZED);
            SetForegroundWindow(GetHwnd());
            SendKey(GetHwnd(), 27);
            SendKey(GetHwnd(), 27);
            SendClick(GetHwnd(), 120, 495);
            SendString(GetHwnd(), account);
            SendKey(GetHwnd(), 9);
            SendString(GetHwnd(), password);
            SendKey(GetHwnd(), 13);
            Thread.Sleep(1000);
        }
    }
}

Espero que me puedan ayudar, a hacerlo solo en visual basic net y no incluyendo dll's en C#
En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
API Sendmessage en una Shell
Programación Visual Basic
Elemental Code 7 4,295 Último mensaje 8 Enero 2011, 02:13 am
por Karcrack
SendMessage
Programación C/C++
calk9 5 3,377 Último mensaje 14 Septiembre 2011, 19:52 pm
por Eternal Idol
SendMessage
Programación Visual Basic
calk9 6 2,519 Último mensaje 20 Septiembre 2011, 00:53 am
por calk9
[C] Clic (con SendMessage) en una ventana externa
.NET (C#, VB.NET, ASP)
GonzaFz 3 3,320 Último mensaje 23 Mayo 2012, 01:37 am
por GonzaFz
Ayuda con click usando SendMessage (presionar y levantar)
.NET (C#, VB.NET, ASP)
GonzaFz 1 2,288 Último mensaje 15 Junio 2012, 00:44 am
por GonzaFz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines