estoy usando el siguiente código para simular un clic del ratón:Realización de un doble clic desde CGEventCreateMouseEvent()
void PostMouseEvent(CGMouseButton button, CGEventType type, const CGPoint point)
{
CGEventRef theEvent = CGEventCreateMouseEvent(NULL, type, point, button);
CGEventSetType(theEvent, type);
CGEventPost(kCGHIDEventTap, theEvent);
CFRelease(theEvent);
}
void LeftClick(const CGPoint point)
{
PostMouseEvent(kCGMouseButtonLeft, kCGEventMouseMoved, point);
NSLog(@"Click!");
PostMouseEvent(kCGMouseButtonLeft, kCGEventLeftMouseDown, point);
PostMouseEvent(kCGMouseButtonLeft, kCGEventLeftMouseUp, point);
}
puedo utilizar básicamente el mismo código para hacer un control y haga clic (clic derecho) cambiando:
kCGEventLeftMouseDown
kCGEventLeftMouseUp
kCGMouseButtonLeft
a sus respectivos eventos "Derecha". La función se parece a algo así como:
void RightClick(const CGPoint point)
{
PostMouseEvent(kCGMouseButtonRight, kCGEventMouseMoved, point);
NSLog(@"Click Right");
PostMouseEvent(kCGMouseButtonRight, kCGEventRightMouseDown, point);
PostMouseEvent(kCGMouseButtonRight, kCGEventRightMouseUp, point);
}
Pero, ¿qué tal un doble clic? Intenté enviar 2 clics hacia la izquierda y llamar a PostMouseEvent() dos veces seguidas, pero no tuve suerte. ¿Cómo se hace un doble clic?
gracias!
como: CGEventSetIntegerValueField (kCGMouseButtonLeft, kCGEventLeftMouseDown, 2) ¿Necesito restablecerlo a 1 después de eso? – Uri
Necesita pasar una referencia al objeto de evento real, en su caso a "theEvent", como el primer parámetro. En ese momento, el recuento de clics de ese evento se establece en 2 y desea dejarlo en 2 para los 4 CGEventPosts que necesita hacer (abajo, arriba, abajo, arriba). – phoebus
de esta manera: CGEventSetIntegerValueField (kCGEventLeftMouseDown, kCGMouseEventClickState, 2); Recibo varias advertencias ... ¿Puedes publicar un fragmento? ¡Gracias! – Uri