2010-07-15 15 views

Répondre

4

SetWindowsHookEx ressemble plus à l'ancien InputManager hack, dans le sens où vous modifiez le code d'une application à partir d'une bibliothèque partagée/un plugin chargé à elle.

Voir SIMBL pour un injecteur de code prêt à l'emploi pour un autre processus. Pour les classes Objective-C, vous devez ensuite utiliser method swizzling. Je n'ai pas essayé de remplacer les classes C/C++ moi-même, mais sûrement cela peut être fait en utilisant mach_override. Voir aussi this blog post.

Mais généralement, si vous souhaitez modifier une application graphique, il suffit de taper sur les classes Objective-C.

0

Les prises d'événements de quartz peuvent surveiller et modifier les événements de bas niveau, tels que les frappes au clavier et les clics de souris, sous réserve de certaines restrictions. Pouvez-vous en dire plus sur ce que vous voulez faire?

+0

Disons que je voulais accrocher la fonction ça charge asdf.dylib. L'ideia est de forcer une application à charger ma propre version personnalisée de asdf.dylib, sans utiliser l'astuce DYLD_INSERT_LIBRARIES. – karlphillip

0

Qu'essayez-vous d'accomplir, spécifiquement? Pouvez-vous expliquer pourquoi vous voulez l'équivalent de Mac OS X de SetWindowsHookEx()? (Réponse courte: il n'y en a pas.Réponse moyenne: à peu près tout ce que vous pouvez faire avec SetWindowsHookEx() sur Windows peut être fait sur Mac OS X d'une autre façon, plus OO.)

+0

Sur les fenêtres 'SetWindowsHookEx' peut vous aider à recevoir des événements de ** autres ** processus. Comme la fermeture de la fenêtre, la fenêtre maximiser ... etc. Etes-vous sûr que cela pourrait être fait sur Mac OS X? –

+0

Ceci est une très vieille réponse à une très vieille question. :) Je disais que, si nous connaissions le problème que le développeur d'origine essayait de résoudre, nous pourrions recommander d'autres approches. –