Hola, tengo una duda que no tengo muy clara y es la siguente:
En los mouse_event cuando introduces el codigo que va a clickear que es el siguiente. Por que el mouse_event solo funciona cuando el valor numerico diferente a 0 esta en la primera sección, y cuando se intercambia no funciona ejemplo:
[DllImport("user32", CharSet = CharSet.Ansi, EntryPoint = "mouse_event", ExactSpelling = true, SetLastError = true)]
public static extern void __(int dwFlags , int dx, int dy, int cButtons, int dwExtraInfo);
el dwExtrainfo es el que representa el 2 al inicio
mouse_event(2,0,0,0,0);[
y no funciona de esta manera
mouse_event(0,2,0,0,0);
alguien me podria decir por que del 2 hacia adelante no funcionan los 0 , o como podria hacer para que funcionen.
gracias
Cita de: Jeezy en 4 Agosto 2018, 18:04 PM
[DllImport("user32", CharSet = CharSet.Ansi, EntryPoint = "mouse_event", ExactSpelling = true, SetLastError = true)]
public static extern void __(int dwFlags , int dx, int dy, int cButtons, int dwExtraInfo);
el dwExtrainfo es el que representa el 2 al inicio
mouse_event(2,0,0,0,0);[
No es así, el parámetro
dwExtraInfo es el último, es decir, el quinto parámetro. El primer parámetro es
dwFlags, el cual representa el evento a simular, y a dicho parámetro es al que le estás enviando el valor numérico "2", o dicho de otra forma:
MOUSEEVENTF_LEFTDOWN (0x0002), es decir, simular la pulsación del botón izquierdo del mouse.
Cita de: Jeezy en 4 Agosto 2018, 18:04 PMalguien me podria decir por que del 2 hacia adelante no funcionan los 0 , o como podria hacer para que funcionen.
No se entiende muy bien lo que estás preguntando, pero básicamente todos los problemas que tengas son causa del desconocimiento de la funcionalidad de los parámetros de esa función y por ende de cuales son los valores que debes pasarle a cada uno, algo que deberías poder solucionar estudiando la documentación oficial de dicha función...
- mouse_event function - MSDN (https://msdn.microsoft.com/en-us/library/windows/desktop/ms646260(v=vs.85).aspx)
Dicho esto, ¿existe algún motivo razonable por el cual quieras recurrir a la API de Windows para realizar ese tipo de operaciones con el mouse?, la función
mouse_event está considerada obsoleta desde hace muchos años, además su utilización resulta muy tosca a la hora de asignar coordenadas absolutas ya que es necesario llevar a cabo cierto cálculo divisorio en relación con el tamaño de la pantalla activa para crear los valores "X" e "Y" correctos...
Cita de: MSDNIf MOUSEEVENTF_ABSOLUTE value is specified, dx and dy contain normalized absolute coordinates between 0 and 65,535. The event procedure maps these coordinates onto the display surface. Coordinate (0,0) maps onto the upper-left corner of the display surface, (65535,65535) maps onto the lower-right corner.
Por dichos motivos, si tu única intención es colocar el puntero del mouse en una ubicación determinada entonces es más que suficiente, simple y efectivo con utilizar la propiedad
System.Windows.Forms.Cursor.Position...
- Cursor.Position Property - MSDN (https://msdn.microsoft.com/en-us/library/system.windows.forms.cursor.position(v=vs.110).aspx)
O en su defecto la función nativa
SetCursorPos...
- SetCursorPos function - Microsoft Docs (https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setcursorpos)
Si por lo contrario tu intención es simular eventos de pulsación de botones del mouse, entonces deberías usar la API nativa de
RAWINPUT junto a la función nativa
SendInput...
- Raw Input - MSDN (https://msdn.microsoft.com/es-es/library/windows/desktop/ms645536(v=vs.85).aspx)
- SendInput function - MSDN (https://msdn.microsoft.com/es-es/library/windows/desktop/ms646310(v=vs.85).aspx)
El desarrollo de un wrapper decente de
RAWINPUT requiere mucho P/Invoking, son bastantes definiciones de miembros/estructuras nativos, así que no puedo mostrar un ejemplo corto por falta de espacio, pero ni falta que hace ya que puedes encontrar ejemplos completos ya hechos en C#, incluyendo librerías de terceros como por ejemplo
Windows Input Simulator que bien puedes utilizar para simular eventos del mouse o puedes extraer las definiciones necesarias de su código fuente...
- https://github.com/michaelnoonan/inputsimulator
Saludos.
A lo que me refiero es que el mouse_event funciona si esta asi
mouse_event(2,0,0,0,0)
Asi funcionaria correctamente
pero si tu ese dos lo cambias de posicion como en este ejemplo
mouse_event(0,2,0,0,0)
El Autoclicker ya dejaria de clickear es a lo que me refiero por que solo funciona el primer valor como en el ejemplo 1 y por que deja de funcionar al cambiar el orden del 2.
Citarmouse_event(2,0,0,0,0)
Te lo acabo de explicar, el primer parámetro de la función
mouse_event es
dwFlags, este parámetro determina el evento a simular, el valor "2" que le pasas al parámetro
dwFlags indica que se debe simular el evento de pulsación del botón izquierdo del mouse (
MOUSEEVENTF_LEFTDOWN = 0x0002), lógicamente si cambias el "2" por un "0" estás dejando de especificar que se simule la pulsación del botón izquierdo del mouse... de hecho no estás indicando que la función
mouse_event haga nada en concreto puesto que el parámetro
dwFlags no acepta ningún valor igual a "0".
Aquí abajo es completamente indiferente el valor que le envíes al parámetro
dx (un "2" en este caso) puesto que le estás envíando "0" al parámetro
dwFlags...
Citarmouse_event(0,2,0,0,0)
...la función hará literalmente nada.
Saludos.
Ah yaya te entendí muchas gracias me resolviste la duda