Question

Je reçois des rapports contradictoires de différents endroits. L'examen de Engadget dit InputManager plug-ins sont complètement ignorés (et de provoquer un comportement étrange si l'application est chargée en mode 32 bits), mais this thread liste de diffusion dit qu'ils ne fonctionnera que si la compatibilité 32/64-bit est à droite.

J'ai donc deux questions:

  • Est-ce que nous arrivons à utiliser InputManagers dans Snow Leopard?
  • Si oui, ça va fonctionner de la même manière que dans Leopard. Et si non, ce qui est bon une solution de contournement (parce que 1Password travaille apparemment sur une solution)?
Était-ce utile?

La solution

Si vous avez vraiment besoin d'injecter du code dans les applications pour accomplir ce que vous essayez de faire, utilisez mach_inject .

un bug demandant des crochets afin que vous puissiez mettre en œuvre votre logiciel de manière plus sûre à l'avenir.

Autres conseils

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

  

Le chargement automatique des faisceaux dans les dossiers de InputManagers est maintenant officiellement non pris en charge. Les conditions de faisceau de gestionnaire d'entrée valide est plus serré. Cette fonctionnalité est susceptible d'être désactivé dans une version future.

     
      
  1. L'installation valide est maintenant limitée à la   / Library / InputManagers seulement.   Bundles dans d'autres endroits sont   silencieusement ignoré.

  2.   
  3. Tous les fichiers du paquet et dossier / Library / InputManagers lui-même   doivent appartenir à l'utilisateur root et   groupe d'administration. Aucun intérieur du   ensemble peut avoir un groupe ou d'une autre écriture   autorisations.

  4.   
  5. processus exécutés avec le privilège de racine (getuid () == 0 ou de geteuid ()   == 0) ne peut pas charger un gestionnaire d'entrée de faisceau.

  6.   
  7. Processus en cours d'exécution avec le privilège de groupe de roue ne peut pas charger un paquet   gestionnaire d'entrée.

  8.   
  9. Le processus doit être à la session de l'espace de travail actif au moment de   le chargement des paquets.

  10.   
  11. Le processus ne doit pas être contaminé en changeant l'utilisateur ou l'identifiant de groupe (vérifié par   issetugid ()).

  12.   
  13. Aucun processus 64 bits peuvent charger les gestionnaires d'entrée de faisceau.

  14.   

Il ressemble à Chax (un plugin InputManager pour iChat) a changé maintenant d'être un lanceur d'applications pour iChat: vous exécutez Chax.app et charges iChat avec hacks UI supplémentaires

.

regardant rapidement les cordes dans le petit lanceur Chax.app/Contents/MacOS/Chax binaire, il semble qu'il est le choix d'une technique d'interception bibliothèque plus facile que le mach_inject déjà mentionné: au lieu que vous situé juste à l'DYLD_INSERT_LIBRARIES variable d'environnement avant de lancer votre application cible (comme LD_PRELOAD Linux).

Bien sûr, cela ne fait pas mes InputManagers préférés, MultiClutch et Afloat, travailler à nouveau dans Snow Leopard - ils étaient plus utiles parce qu'ils ont travaillé avec toutes les applications Cocoa. Pas encore sûr de ce que la meilleure solution serait pour ces applications.

Je ne l'ai pas télécharger le 1Password 3 beta pour essayer de voir ce qu'ils faisaient, parce qu'il ressemblait à vous devez signer un NDA virtuel d'abord.

1Password 3.0 fonctionne autour de la nécessité d'une InputManager par ferroutage sur le plug-in du navigateur Safari de l'API à la place. L'article lié fournit également une comparaison très pragmatique des différentes alternatives d'injection de code à InputManagers.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top