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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…