2010-10-29 35 views
6

我甚至不知道在哪裏這個問題開始......蘋果事件控制鼠標遠程

我希望能夠發送鼠標點擊事件到另一臺機器,因爲如果用戶點擊了上那臺機器。

我可以通過做在同一臺機器上:

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作爲應用程序通信的一些內容,但是我想在另一臺機器上生成一個系統事件?

完全不確定。

感謝,


[編輯10-11-1 7:30A]

只是爲了澄清,我並不想屏幕共享。至少我不這麼認爲。我有一個連接在一起的幾個mac專業人員集羣,每個有4個顯示器。我試圖只使用1個設備來向每個節點傳遞「點擊」。因此,如果設備在節點3上,但設備插入節點0,節點0需要告訴節點3它需要響應點擊。

感謝,


[編輯10年11月4日上午9點32]

真的嗎?沒有人可以給我一個具體的代碼示例生成Apple事件編程在C/C++/Objc-C遠程機器上創建鼠標事件?

+0

沒有人?真? – 2010-10-29 17:14:35

+0

您可以使用applescript與遠程機器交談,它不僅適用於應用程序。外匯:http://hints.macworld.com/article.php?story=20020914091607912我想你可能想用蘋果事件做點什麼,但我不知道細節。 – ergosys 2010-11-01 21:54:04

回答

-1

這可能涉及writing a device driver並假裝是鼠標。

+0

真的嗎?我無法使用Apple Events將消息發送到另一臺計算機上的系統? – 2010-11-04 14:27:38

+2

你可以,但你想發送鼠標事件,這是完全不同的。也許你實際上不需要設備驅動程序,但是某種監聽應用程序可以監聽連接,然後執行你已經想出的操作。 – 2010-11-04 16:39:52

0

我要開箱即用,並建議您試試Synergy,因爲它聽起來像您正在尋找的東西。如果不是這樣,因爲它是開源代碼,所以可以給你一個關於如何繼續的想法。

3

據我所知,您可以使用Distributed Objects來傳遞Apple事件。

他們可以通過Bonjour在網絡上工作。您可以對Apple Event進行序列化或編碼,並通過網絡傳遞它,然後在另一端的機器上運行一個助手應用程序來偵聽,解碼事件並運行它。您可能只是想簡單地編碼鼠標點擊的座標。

我也相信Marcus Zarra的書Core Data有一個Core Data應用程序的示例代碼,它運行在使用DO的網絡上。你可能會看到他做了什麼,並做了類似的事情來幫助你入門。另見Mike Ash編輯的this excellent Q&A on DO

1

「系統事件」,「應用程序」(只是在現實過程中)允許使用AppleScript發送事件:

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