Почему я не могу отправить щелчок мыши в определенное окно?

#objective-c #cocoa #macos

#objective-c #cocoa #macos

Вопрос:

Итак, я наткнулся на решение Дейва здесь: 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, amp;psn) == noErr, @"GetProcessForPID failed!");

CGEventPostToPSN(amp;psn, CGEvent);
  

Я знаю, что приложение использует следующее для идентификации событий:

результат = ReceiveNextEvent?(0, NULL, kEventDurationNoWait, true и событие);

Спасибо!

Комментарии:

1. Итак, выполнение CGInhibitLocalEvents в true, затем false до / после CGEventPostToPSN, похоже, что-то делает, иш. Некоторые вещи отправляются в окно, но щелчки даже не проходят, хотя я вижу, что кнопка перемещается вверх вниз. (и все координаты отключены)