我甚至不确定从这个问题开始......
我希望能够将鼠标点击事件发送到另一台计算机,就像用户点击了该计算机一样。
我可以通过以下方式在同一台机器上完成:
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与app-app通信的一些内容,但我想在另一台机器上生成一个系统事件?
完全不确定。
谢谢,
[编辑11/1/10 7:30a]
只是为了澄清,我不打算屏幕分享。至少我不这么认为。我有几个连接在一起的mac pro集群,每个都有4个监视器。我试图只使用一个设备来向每个节点传达“点击”。因此,如果设备在节点3之上,但设备已插入node0,则node0需要告知节点3它需要响应点击。
谢谢,
[编辑11/4/10 9:32 am]
真的?没有人可以给我一个具体的代码示例,以编程方式生成Apple Events以在C / C ++ / Objc-C中在远程计算机上创建鼠标事件???
答案 0 :(得分:3)
据我了解,您可以使用Distributed Objects传递Apple Events。
他们可以通过Bonjour在网络上工作。您可以将Apple事件序列化或编码通过网络传递,然后在另一端的计算机上运行帮助应用程序来监听,解码事件并运行它。为简单起见,您可能只想对鼠标点击的坐标进行编码。
我也相信Marcus Zarra在Core Data上的书中有一个使用DO的网络上运行的Core Data应用程序的示例代码。你可能能够看到他做了什么,并做了类似的事情,让你开始。另见Mike Ash的this excellent Q&A on DO。
答案 1 :(得分:1)
“系统事件”“应用程序”(实际上只是一个过程)允许使用applescript发送事件:
tell application "System Events"
tell process "Finder"
click at {10, 10}
end tell
end tell
答案 2 :(得分:0)
我将开箱即用,并建议您尝试Synergy,因为它听起来像您正在寻找的。如果没有,因为它是开源代码,看看它可能会让你知道如何继续。
答案 3 :(得分:-1)
这可能会涉及writing a device driver并假装是一只老鼠。