2011-11-09 23 views
7

Necesito poder establecer la ubicación del mouse en el medio de la pantalla/ventana. ¿Cómo puedo hacer eso?Establecer la ubicación del mouse

+2

Por qué no puede el usuario sólo mover el cursor allí sí mismos? – dreamlax

+1

Creo que esta es una de esas cosas en las que no hay una forma sencilla de hacerlo porque no es una tarea fácil de usar. – dreamlax

+0

No creo que la ubicación del mouse en un cierto punto sea muy útil ... pero, de nuevo, no estoy muy seguro de lo que quiere de su programa ... – Gabe

Respuesta

9

La documentación parece indicar que CGDisplayMoveCursorToPoint o CGWarpMouseCursorPosition hará lo que está buscando.

EDIT: para que coincida con su último comentario, yo recomendaría más CGWarpMouseCursorPosition, sobre el cual el estado docs:

Por ejemplo, esta función se utiliza a menudo para desplazar la posición del cursor de vuelta al centro de la pantalla por juegos que no quieren que el cursor esté anclado por los bordes de la pantalla.

+0

Acabo de probar esto. Gracias por su ayuda, pero esta función parece anular mi controlador de mouse en mi juego. –

+2

@ChaseWalden, ¿por "anulación" quieres decir exactamente? Ya no se llaman? –

+0

sí. Responde por 2-3 fotogramas y luego se bloquea. –

-1

Puede usar [NSEvent mouseLocation] para obtener la ubicación actual del cursor, pero no encontré ninguna forma de ajustar la posición al centro de la pantalla.

+0

Entonces, ¿por qué respondes en lugar de comentar? – Dani

+0

Cometí un error y publiqué una respuesta pensando que esta era una pregunta con respecto al ihone, luego me di cuenta de mi error y arreglé rápidamente una nueva respuesta – Gabe

4

Estuve trabajando en algo así la semana pasada.

CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState); 
    CGEventRef mouse = CGEventCreateMouseEvent (NULL, kCGEventMouseMoved, CGPointMake(X, Y), 0); 
    CGEventPost(kCGHIDEventTap, mouse); 
    CFRelease(mouse); 
    CFRelease(source); 

Sólo hay que establecer X e Y.

EDIT:

#include <ApplicationServices/ApplicationServices.h> 
+0

Esto (hasta ahora) funciona muy bien para mí. Utilizo esto junto con [NSCursor hide] en una aplicación para lanzar videos de pantalla completa mezclados (para máquinas configuradas como instalaciones que no tienen interacción del usuario). Hacerlo me permite evitar que el mouse sea visible o que se cierne sobre la barra de menú. – viperld002

Cuestiones relacionadas