所以我在这里偶然发现了戴夫的解决方案:http://lists.apple.com/archives/Cocoa-dev/2009/Apr/msg00764.html
这基本上模仿了另一个窗口+发送所有鼠标命令,完全有道理。我能够将信息发送到safari并浏览网页。
但是当我尝试向游戏窗口(OpenGL驱动)发送鼠标命令时,它根本没有做任何事情。
有谁能想到为什么会这样?以下是实际发送事件的相关代码:
ProcessSerialNumber psn;
CGEventRef CGEvent;
NSEvent *customEvent;
customEvent = [NSEvent mouseEventWithType: [event type]
location: [event locationInWindow]
modifierFlags: [event modifierFlags] | NSCommandKeyMask
timestamp: [event timestamp]
windowNumber: WID
context: nil
eventNumber: 0
clickCount: 1
pressure: 0];
CGEvent = [customEvent CGEvent];
NSAssert(GetProcessForPID(PID, &psn) == noErr, @"GetProcessForPID failed!");
CGEventPostToPSN(&psn, CGEvent);
我知道应用程序使用以下内容来识别事件:
result = ReceiveNextEvent?(0,NULL,kEventDurationNoWait,true,& theEvent);
谢谢!