Вопрос

Я получаю противоречивые сообщения из разных мест.В обзоре Engadget говорится, что плагины InputManager полностью игнорируются (и вызывают странное поведение, если приложение загружается в 32-битном режиме), но эта ветка списка рассылки говорит, что они будут работать, если 32/64-битная совместимость правильная.

Итак, у меня есть два вопроса:

  • Сможем ли мы использовать InputManager в Snow Leopard?
  • Если да, то будет ли это работать так же, как в Леопарде.И если нет, то какой обходной путь является хорошим (поскольку 1Password, очевидно, работает над исправлением)?
Это было полезно?

Решение

Если вам действительно необходимо внедрить код в приложения для выполнения того, что вы пытаетесь сделать, используйте mach_inject.

И пожалуйста сообщить об ошибке запрос перехватчиков, чтобы в будущем вы могли более безопасно внедрять свое программное обеспечение.

Другие советы

http://developer.apple.com/releasenotes/Cocoa/AppKit.html#NSInputManager

Автоматическая загрузка пакетов, находящихся в папках InputManagers, теперь официально не поддерживается.Условия для действительного пакета диспетчера ввода еще более ужесточаются.Эта функция, вероятно, будет отключена в будущем выпуске.

  1. Допустимая установка теперь ограничена только папкой /библиотеки /Inpint Managers.Связки в других местах молча игнорируются.

  2. Все файлы в папке пакета и /библиотека /Input Managers должны принадлежать пользователю root и группа администратора.Никакие файлы внутри пакета не могут иметь группы или другие разрешения на запись.

  3. Процессы, работающие с корневой привилегией (getuid () == 0 или geteuid () == 0) не могут загрузить какой -либо диспетчер ввода пакета.

  4. Процессы, работающие с привилегией группы колесных групп, не могут загрузить какую -либо диспетчер ввода пакета.

  5. Процесс должен быть в сеансе активного рабочего пространства во время загрузки пучков.

  6. Процесс не должен быть испорчен изменением идентификатора пользователя или группы (проверено issetugid ()).

  7. Никакие 64-битные процессы не могут загружать диспетчеры ввода пакетов.

Похоже, Chax (плагин InputManager для iChat) теперь стал средством запуска приложений для iChat:вы запускаете Chax.app, и оно загружает iChat с дополнительными хаками пользовательского интерфейса.

Быстро взглянув на строки в крошечном двоичном файле запуска Chax.app/Contents/MacOS/Chax, кажется, что он выбирает более простой метод перехвата библиотеки, чем уже упомянутый mach_inject:вместо этого ты просто установите DYLD_INSERT_LIBRARIES переменная среды перед запуском целевого приложения (например, LD_PRELOAD в Linux).

Конечно, это не заставляет мои любимые менеджеры ввода, MultiClutch и Afloat, снова работать в Snow Leopard — они были наиболее полезны, потому что работали со всеми приложениями Cocoa.Все еще не уверен, какой обходной путь будет лучшим для этих приложений.

Я не загружал бета-версию 1Password 3, чтобы посмотреть, что они делают, потому что казалось, что сначала вам нужно подписать виртуальное соглашение о неразглашении.

1Password 3.0 устраняет необходимость в InputManager путем использование API плагина браузера Safari вместо.В связанной статье также представлено очень прагматичное сравнение различных альтернатив ввода кода InputManager.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top