Нет. Знаете, это называется защищенной памятью. Другая программа полностью изолирована от вашего приложения. Есть способы поместить код в другие приложения, но (а) он очень нежелателен (б) требует привилегий root, что означает, что остальная часть вашего приложения должна быть ROCK SOLID AND IMPREGNABLE, и (в) написание такого кода является черным искусством требуется знание интерфейсов ядра операционной системы, управления виртуальной памятью, ABI, внутренних компонентов компоновщика / загрузчика, программирования на ассемблере, а также рабочих параметров и других особенностей конкретного процессора, на котором работает ваше приложение.
Действительно, AppleEvents и другие подобные механизмы IPC существуют по причине.
Ваши другие альтернативы (честно говоря, все они немного странные и дают вам довольно значительную нагрузку, гарантируя, что целевое приложение находится в том состоянии, в котором вы хотите / ожидаете), доступ к данным, которые вы ищете :
- API-интерфейсы специальных возможностей из платформы ApplicationServices, с помощью которых вы можете перемещаться по дереву пользовательского интерфейса для извлечения текста из любого места, где он вам нужен, или можете активировать пункт меню. Однако доступ к вашему приложению должен быть явно предоставлен пользователем (хотя это во многом совпадает с требованием для сценариев пользовательского интерфейса).
- Вы можете использовать API-интерфейсы CoreGraphics (снова в рамках ApplicationServices), чтобы напрямую отправлять события клавиатуры целевому приложению (или просто системе). Это будет означать отправку четырех событий: Command-down, C-down, C-up, Command-up.
Ни один из них не идеален. Если честно, ваш лучший подход - это посмотреть на ваши требования и выяснить, как вы можете наилучшим образом решить проблему, изменив эти требования каким-либо образом, то есть вместо того, чтобы что-то захватить напрямую, попросить пользователя предоставить некоторую информацию и т. Д.