2010-10-29 14 views
6

no estoy seguro por dónde empezar con esta pregunta ...Apple Events a Mouse, controlada remotamente

Quiero ser capaz de enviar un clic del ratón eventos a otra máquina, como si el usuario hubiera hecho clic en esa máquina

puedo hacerlo en la misma máquina a través de:

CGEventSourceRef source = CGEventSourceCreate(NULL); 
CGEventType eventType = kCGEventLeftMouseDragged; 
CGPoint mouseCursorPosition; 
mouseCursorPosition.x = point.x; 
mouseCursorPosition.y = point.y; 
CGMouseButton mouseButton = kCGMouseButtonLeft; 

CGEventRef mouseEvent = CGEventCreateMouseEvent (source, 
       eventType, 
       mouseCursorPosition, 
       mouseButton); 
CGEventSetType(mouseEvent, kCGEventLeftMouseDragged); // Fix Apple Bug 
CGEventPost(kCGSessionEventTap, mouseEvent); 
CFRelease(mouseEvent); 

Pero ¿cómo puedo enviar el evento a otro lugar? Applescript? He leído algunas cosas con AppleEvents siendo la comunicación entre aplicación y aplicación, pero me gustaría simplemente generar un evento del sistema en otra máquina.

Totalmente inseguro.

Gracias,


[Editar 11/1/10 7: 30a]

Solo para aclarar, no estoy en busca de cuota de pantalla. Al menos yo no lo creo Tengo un grupo de varios profesionales de mac vinculados entre sí, cada uno tiene como 4 monitores. Intento usar solo 1 dispositivo para comunicar "clics" a cada uno de los nodos. Entonces, si el dispositivo está sobre el nodo 3, pero el dispositivo está conectado al nodo 0, el nodo 0 necesita decirle al nodo 3 que necesita responder a un clic.

Gracias,


[Editar 11/4/10 9:32 am]

realmente? Nadie me puede dar un ejemplo concreto de código de generación de eventos de Apple mediante programación para crear eventos de mouse en máquinas remotas en C/C++/Objc-C ???

+0

nadie? ¿De Verdad? –

+0

Puede usar applescript para hablar con máquinas remotas, no es solo aplicación de aplicación. Forex: http://hints.macworld.com/article.php?story=20020914091607912 Creo que probablemente quieras cocinar algo con eventos de manzana, pero no sé los detalles. – ergosys

Respuesta

-1

Esto probablemente implique writing a device driver y simule ser un mouse.

+0

realmente?No puedo usar Apple Events para enviar un mensaje al sistema en otra máquina? –

+2

Puede, pero desea enviar eventos de mouse, eso es completamente diferente. Quizás no necesite un controlador de dispositivo, sino algún tipo de aplicación de escucha que escuche una conexión y luego realice las acciones que ya ha descubierto. –

0

Voy a responder de la caja, y le sugiero que pruebe Synergy, ya que suena como lo que está buscando. De lo contrario, dado que es un código de código abierto que eche un vistazo puede darte una idea de cómo proceder.

3

Según tengo entendido, puede usar Distributed Objects para pasar los eventos de Apple a lo largo.

Pueden funcionar a través de la red a través de Bonjour. Puede serializar o codificar un evento Apple pasarlo a través de la red y luego tener una aplicación auxiliar ejecutándose en la máquina en el otro extremo para escuchar, decodificar el evento y ejecutarlo. Es posible que desee codificar las coordenadas del clic del mouse para simplificar.

También creo que el libro de Marcus Zarra en Core Data tiene el código de ejemplo para una aplicación Core Data que se ejecuta en una red que utiliza DO. Es posible que pueda ver lo que ha hecho y hacer algo similar para comenzar. Ver también this excellent Q&A on DO por Mike Ash.

1

el "sistema" Eventos "aplicación" (sólo un proceso en la realidad) Permite enviar eventos utilizando applescript:

tell application "System Events" 
tell process "Finder" 
click at {10, 10} 
end tell 
end tell