[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
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.
alguien 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...
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...
If 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...
O en su defecto la función nativa
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...
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...
Saludos.