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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  C# - Simular Click en otra aplicacion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: C# - Simular Click en otra aplicacion  (Leído 4,452 veces)
NOIS

Desconectado Desconectado

Mensajes: 67


Ver Perfil
C# - Simular Click en otra aplicacion
« en: 10 Mayo 2016, 20:20 pm »

Estoy haciendo un programa simple que pueda simular un click izquierdo, lo cual ya tengo, pero no se como hacer para simularlo en otras aplicaciones.
Este es mi código:
Código
  1. class Program
  2.    {
  3.        // Estructura Para la Posicion del Raton
  4.        public struct Point
  5.        {
  6.            public int X;
  7.            public int Y;
  8.        };
  9.  
  10.        static void Main(string[] args)
  11.        {
  12.            do
  13.            {
  14.                while (Console.ReadKey(true).Key == ConsoleKey.Multiply)
  15.                {
  16.                    LeftMouseClick();
  17.                }
  18.            } while (Console.ReadKey(true).Key != ConsoleKey.Escape);
  19.        }
  20.  
  21.        // Obtener Posicion del Raton
  22.        [DllImport("user32.dll")]
  23.        static extern bool GetCursorPos(ref Point mPoint);
  24.  
  25.        // Evento para Simular Click
  26.        [DllImport("user32.dll")]
  27.        public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
  28.  
  29.        public const int LEFTDOWN = 0x02;
  30.        public const int LEFTUP = 0x04;
  31.  
  32.        // Funcion Principal
  33.        public static void LeftMouseClick()
  34.        {
  35.            Point pt = new Point();
  36.            GetCursorPos(ref pt);
  37.            mouse_event(LEFTDOWN, pt.X, pt.Y, 0, 0);
  38.            mouse_event(LEFTUP, pt.X, pt.Y, 0, 0);
  39.  
  40.            Console.WriteLine("Cursor Pos: " + pt.X.ToString() + " - " + pt.Y.ToString());
  41.        }
  42.    }
  43.  


En línea

NOIS dev7
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: C# - Simular Click en otra aplicacion
« Respuesta #1 en: 10 Mayo 2016, 21:10 pm »

Debes declarar bastantes más definiciones de la WinAPI para poder identificar la ventana objetivo a la que pretendes enviar la pulsación del mouse, y las dimensiones/rectángulo de dicha ventana para saber en que punto en concreto de la pantalla realizar el "click". Si por lo contrario ya conoces el punto exacto donde realizar el "click", entonces explica que problema encuentras (y si se trata de un videojuego online).

Aquí tienes la referencia online de las funciones implicadas para lo que quieres hacer (Findwindow, FindWindowEx, EnumChildwindows, GetWindowRect, etc):

Hay muchísima información, artículos y extensos ejemplos sobre ello que puedes encontrar en los resultados de Google, los códigos ya los encontrarás hechos y en C#, intenta buscar un poco.

Por lo general deberías enumerar los elementos de la UI, pero para evitar y simplificar esa tarea siempre puedes utilizar herramientas como "Microsoft Inspect":



De todas formas, estás utilizando una metodología deprecada desde hace muchos años (mouse_event), aunque te servirá igualmente y sin darte ningún problema, pero quizás en el futuro quieras considerar implementar las definiciones de la API "Raw Input":
(en mi API gratuita "ElektroKit" puedes encontrar todas las definiciones necesarias y ejemplos de uso, pero en Vb.Net)

Aparte de lo ya mencionado, y dependiendo de cuales sean tus verdaderas intenciones, quizás no deba ser necesario recurrir al código no administrado, por que siempre puedes utilizar el framework de Microsoft UI Automation para inspeccionar los elementos de cualquier interfáz gráfica para obtener toda la información de cualquier ventana de la UI, y realizar acciones como por ejemplo invocar un control ...lo que sería una simulación de "click" sobre un control.
(también puedes aplicar esta metodología bajo tecnología WindowsForms, solo debes referenciar los ensamblados relacionados con WPF y UI Automation)

Saludos


« Última modificación: 10 Mayo 2016, 21:26 pm por Eleкtro » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Simular click de raton
.NET (C#, VB.NET, ASP)
Gorky 7 12,174 Último mensaje 11 Septiembre 2009, 05:01 am
por Zzombi
Simular Click « 1 2 »
Programación Visual Basic
ignorantev1.1 19 9,791 Último mensaje 2 Diciembre 2011, 09:21 am
por BlackZeroX
Como hacer click en un boton de otra aplicacion?
Programación Visual Basic
$Edu$ 5 5,434 Último mensaje 22 Marzo 2015, 12:35 pm
por Piratex
MOVIDO: C# - Simular Click en otra aplicacion
Programación General
Eleкtro 0 2,094 Último mensaje 10 Mayo 2016, 20:47 pm
por Eleкtro
[C#] Emular click del ratón en otra aplicación
.NET (C#, VB.NET, ASP)
Extraterrestre 3 2,880 Último mensaje 11 Agosto 2019, 12:56 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines