Итак, я наткнулся на решение Дейва здесь: http://lists.apple.com/archives/Cocoa-dev/2009/Apr/msg00764.html
Это в основном имитирует другое окно + отправляет все команды мыши, имеет полный смысл. Мне удалось отправить информацию в сафари и перемещаться по сети.
Но когда я пытаюсь отправить команду мыши в игровое окно (с поддержкой 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);
Спасибо!