SetWindowsHookEx for Mac OS X?
Windows hooks allows you to poke inside other processes and sometimes alter their behaviors.开发者_StackOverflow中文版
Is there such thing for Mac OS X?
Thanks!
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.
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?
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.)
精彩评论