2010-10-29 7 views
6

Я даже не знаю, где начать с этим вопросом ...Apple, события в мышь управления Дистанционно

Я хочу, чтобы иметь возможность отправить мыши щелкните события на другую машину, как если бы пользователь нажал на это машина.

я могу сделать это на той же машине через:

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); 

Но как я могу отправить это событие где-то еще? Applescript? Я прочитал некоторые вещи, когда AppleEvents является коммуникацией приложений, но я хотел бы просто создать системное событие на другой машине?

Полностью неуверенный.

Спасибо,


[Редактировать 11/1/10 7: 30а]

Просто для уточнения, я не ищу экранировать долю. По крайней мере, я так не думаю. У меня есть кластер из нескольких макросов, связанных друг с другом, у каждого есть как 4 монитора. Я пытаюсь использовать только 1 устройство для связи «кликов» с каждым из узлов. Поэтому, если устройство находится над узлом 3, но устройство подключено к node0, node0 должен сообщить узлу 3, что ему нужно ответить на щелчок.

Спасибо,


[Редактировать 11/4/10 9:32 утра]

Действительно? Никто не может дать мне конкретный пример кода генерации событий Apple Programmatically для создания событий мыши на удаленных компьютерах в C/C++/Objc-C ???

+0

никто? действительно? –

+0

Вы можете использовать applescript для общения с удаленными компьютерами, это не только приложение для приложения. Forex: http://hints.macworld.com/article.php?story=20020914091607912 Я думаю, вы, вероятно, захотите что-нибудь приготовить с яблочными событиями, но я не знаю подробностей. – ergosys

ответ

-1

Это, вероятно, будет связано с writing a device driver и притворяется мышкой.

+0

действительно?Я не могу использовать Apple Events для отправки сообщения в систему на другой машине? –

+2

Вы можете, но вы хотите отправить события мыши, это совсем другое. Возможно, вам действительно не нужен драйвер устройства, но какое-то приложение для прослушивания, которое прослушивает соединение, а затем выполняет действия, которые вы уже выяснили. –

0

Я собираюсь ответить «из коробки» и предлагаю вам попробовать Synergy, так как это похоже на то, что вы ищете. Если нет, так как это открытый исходный код, взглянув на него, это может дать вам представление о том, как действовать.

3

Как я понимаю, вы можете использовать Distributed Objects для передачи событий Apple.

Они могут работать через сеть через Bonjour. Вы можете сериализовать или закодировать событие Apple, передать его по сети, а затем использовать вспомогательное приложение, работающее на компьютере на другом конце, для прослушивания, декодирования события и его запуска. Вы просто можете просто закодировать координаты щелчка мыши для простоты.

Я также считаю, что книга Маркуса Зарры на Core Data содержит пример кода для приложения Core Data, работающего по сети, использующей DO. Возможно, вы сможете увидеть, что он сделал, и сделать что-то похожее, чтобы вы начали. См. Также this excellent Q&A on DO от Майка Эша.

1

«система» События «приложение» (только процесс в реальности) позволяет отправлять события с помощью AppleScript:

tell application "System Events" 
tell process "Finder" 
click at {10, 10} 
end tell 
end tell 
Смежные вопросы