#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, похоже, что-то делает, иш. Некоторые вещи отправляются в окно, но щелчки даже не проходят, хотя я вижу, что кнопка перемещается вверх вниз. (и все координаты отключены)