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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [C] Clic (con SendMessage) en una ventana externa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] Clic (con SendMessage) en una ventana externa  (Leído 3,319 veces)
GonzaFz

Desconectado Desconectado

Mensajes: 69


Ver Perfil WWW
[C] Clic (con SendMessage) en una ventana externa
« en: 21 Mayo 2012, 08:26 am »

Bueno para que se entienda bien mi objetivo es hacer un programa que haga una serie de clicks en una ventana determinada aunque esta este minimizada.
Busque en google por 3 dias seguidos sin parar y segun entendi con la función SendMessage se puede hacer lo que quiero, es decir, que simule un clic o envie una tecla aunque la ventana este minimizada.
Un simple ejemplo seria enviar una letra al notepad, mi codigo es:
Código:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {

        [DllImport("user32.dll")]
        public static extern void SendMessage(Int32 hwnd, Int32 Msg, Int32 dx, Int32 dy);

        [DllImport("user32.dll")]
        public static extern int FindWindow(string lpClassName, string lpWindowName);

        [DllImport("user32.dll", SetLastError = true)]
        static extern Int32 FindWindowEx(Int32 hwndParent,
             IntPtr hwndChildAfter,
             string lpszClass,
             string lpszWindow
        );

        const Int32 WM_LBUTTONDOWN = 0x02;
        const Int32 WM_LBUTTONUP = 0x04;
        const Int32 VK_Q = 0x051;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Int32 WindowToFind = FindWindow("notepad", "Sin título: Bloc de notas");
            Int32 cuadro = FindWindowEx(WindowToFind, IntPtr.Zero, "edit", null);
            SendMessage(cuadro, VK_Q, 0, 0);


        }
    }
}

Ese es mi codigo completo, lo que no puedo hacer es que envie la Q al notepad! Intente de varias formas, por ejemplo:

Código:
private void button1_Click(object sender, EventArgs e)
        {
            Int32 WindowToFind = FindWindow("notepad", "Sin título: Bloc de notas");
            SendMessage(WindowToFind, VK_Q, 0, 0);
        }

Pero ese hace que cuando se aprieta el boton el programa en este caso notepad se cierre.
Entonces lei en paginas que necesito utilizar la función FindWindowEx (lei algo sobre child, hand y no se que) para seleccionar el cuadro donde se ingresa texto del Bloc de notas, entonces mi codigo queda:

Código:
private void button1_Click(object sender, EventArgs e)
        {
            Int32 WindowToFind = FindWindow("notepad", "Sin título: Bloc de notas");
            Int32 cuadro = FindWindowEx(WindowToFind, IntPtr.Zero, "edit", null);
            SendMessage(cuadro, VK_Q, 0, 0);

        }
(los valores como "edit" los obtuve con Spy++)

En este caso al presionar el Button1 el notepad no se cierra pero tampoco se escribe la Q!.
No se que tiene el codigo que no escribe la Q!.

Eso es a modo de prueba pero mi proyecto es crear un BOT para un juego de facebook, ya hice con mouse_event y SetCursorPos pero no es bueno porque no podes usar otros programas mientras el bot este activo.

No se que mas decirles :o! Simplemente si me pueden ayudar les agradeceria porque busque en toda la internet y no puedo solucionar esto..

Utilizo Visual C# 2010 Express


En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [C] Clic (con SendMessage) en una ventana externa
« Respuesta #1 en: 22 Mayo 2012, 11:27 am »

Esto no es C, ni C++, es C# asi que lo muevo a donde corresponde.


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: [C] Clic (con SendMessage) en una ventana externa
« Respuesta #2 en: 22 Mayo 2012, 17:36 pm »

un post mio viejo, de como hacer eso en VB .NET.

Ayuda con el parametro de esta API?

saludos.
En línea

GonzaFz

Desconectado Desconectado

Mensajes: 69


Ver Perfil WWW
Re: [C] Clic (con SendMessage) en una ventana externa
« Respuesta #3 en: 23 Mayo 2012, 01:37 am »

Gracias seba =).
Igualmente despues de muchos millones de intentos logre hacer que funcione correctamente (en c#), el problema ahora es que me di cuenta que no funciona en contenidos FLASH que se encuentren dentro de un WebBrowser.
Pense en poner, por ejemplo, un Label o Panel atras entonces yo en mi funcion de FindWindowEx ponia que lo haga en el Label (que este estaria atras de mi WebBrowser) pero luego de pensar mucho me di cuenta de que no es lo mismo que un macro, si yo hacia eso entonces igual se haria clic en el Label aunque este sea invisible.
Así que bueno me desilucione con no poder hacer clic en Flash :S! Ahora no se me ocurre otra forma de intentarlo..
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Evitar que una ventana pase al frente inmediatamente se presiona clic
GNU/Linux
Aikanáro Anário 0 1,993 Último mensaje 26 Marzo 2012, 02:47 am
por Aikanáro Anário
Clic en imagebox externo sendmessage « 1 2 »
Programación Visual Basic
Cromatico 15 6,380 Último mensaje 9 Noviembre 2012, 00:03 am
por Cromatico
Manejo de Ventana Externa
Programación Visual Basic
ranslsad 2 1,712 Último mensaje 14 Abril 2013, 13:46 pm
por Psyke1
Evitar activación de ventana externa
.NET (C#, VB.NET, ASP)
TomaSs 0 1,484 Último mensaje 20 Agosto 2013, 00:32 am
por TomaSs
Enviar click a ventana externa (de forma especial)
.NET (C#, VB.NET, ASP)
TomaSs 0 1,495 Último mensaje 25 Enero 2014, 14:04 pm
por TomaSs
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines