Windows hooks allows you to poke inside other processes and sometimes alter their behaviors.
Is there such thing for Mac OS X?
Thanks!
Windows hooks allows you to poke inside other processes and sometimes alter their behaviors.
Is there such thing for Mac OS X?
Thanks!
Quartz event taps can monitor and modify low-level events such as keystrokes and mouse clicks, subject to some restrictions. Can you tell more about what you want to do?
SetWindowsHookEx
is more like the old InputManager
hack, in the sense that you change the code of an app from inside a shared library / a plugin loaded to it.
See SIMBL for a ready-made code injector to another process. For Objective-C classes, you then need to use method swizzling. I haven't tried replacing C functions / C++ classes myself, but surely it can be done using mach_override. See also this blog post.
But usually if you want to modify a GUI app, tapping into Objective-C classes would be sufficient.
What are you trying to accomplish, specifically? Can you explain why you want the Mac OS X equivalent of SetWindowsHookEx()
? (Short answer: there isn't one. Medium answer: just about everything you can do with SetWindowsHookEx()
on Windows can be done on Mac OS X in some other, more OO way.)
JWWalker:
What are the limitations on Quartz event taps?
Can they be used to sniff somebody's keystrokes when they are typing passwords/credentials/etc into Safari?