Tengo dos monitores con el monitor no principal ( número 1 ) configurado en la esquina superior izquierda del principal ( número 2 ) de esta manera:
Repito: el número 2 es el monitor principal.
Aquí está el código:
Cursor.Position = new Point(-500, -500);Lo que sucede es que cuando el cursor está inicialmente en el monitor principal ( número 2 ), después de ejecutar el código, el cursor se mueve al monitor número 1 , a una ubicación 500 píxeles por encima de su parte inferior, pero en el extremo derecho. Aquí:
En lugar de aquí:
Después de ejecutar el código anterior dos veces, así:
Cursor.Position = new Point(-500, -500); Cursor.Position = new Point(-500, -500);Llega al lugar correcto.
El problema es que este código parece un truco y me gustaría evitarlo y llevar el cursor al lugar correcto de una manera "correcta".
Entonces, ¿cómo logro eso?
Cuando tiene más de una pantalla, debe tener cuidado con los límites de cada pantalla. C# proporciona una matriz de pantallas y puede recorrer esa matriz para obtener más información sobre las coordenadas de la pantalla, es decir Screen.AllScreens
Vea la imagen a continuación que demuestra que solo la pantalla principal comienza desde X: 0 e Y: 0 en el plano 2D (X, Y), podemos ajustar la segunda pantalla en cualquier lugar, en mi caso tiene la posición (-1366,305) como se muestra . y diferentes puntos ar
Cada pantalla tiene su límite de izquierda a derecha y de arriba a abajo. Puede usar esos límites para ir a la posición exacta como se muestra en el código. Puedo moverme a cualquier punto de cualquier pantalla si agrego el valor de sus límites al punto.
//To move on First Screen use its Bounds Cursor.Position = new Point(300 + Screen.AllScreens[0].Bounds.Left, 300 + Screen.AllScreens[0].Bounds.Top); //To move on Second Screen use its Bounds Cursor.Position = new Point(300 + Screen.AllScreens[1].Bounds.Left, 300 + Screen.AllScreens[1].Bounds.Top);