SetWindowsHookEx在Mac OS X下是否适用?

6

Windows钩子允许您查看其他进程并有时更改它们的行为。

在Mac OS X中是否有类似的东西?

谢谢!

3个回答

5

SetWindowsHookEx 更像是旧的 InputManager hack,意味着你可以从内部共享库/插件中更改应用程序的代码。

请参见SIMBL以获取一个现成的代码注入器到另一个进程。对于Objective-C类,您需要使用方法交换。我自己没有尝试替换C函数/C++类,但肯定可以使用mach_override来完成。还可以参见这篇博客文章

但通常情况下,如果您想修改GUI应用程序,则可以利用Objective-C类就足够了。


0
Quartz事件挂钩可以监视和修改低级别事件,例如按键和鼠标点击,但受到一些限制。您能详细说明您想要做什么吗?

假设我想挂钩加载 asdf.dylib 的函数。 这个想法是强制一个应用程序加载我自己定制的版本的 asdf.dylib,而不使用 DYLD_INSERT_LIBRARIES 技巧。 - karlphillip

-1
你具体想要实现什么?你能解释一下为什么你想要 Mac OS X 版本的 SetWindowsHookEx() 吗?(简短回答:没有。中等回答:几乎所有你在 Windows 上可以用 SetWindowsHookEx() 实现的功能,在 Mac OS X 上都可以用其他更面向对象的方式实现。)

在Windows上,SetWindowsHookEx可以帮助您从其他进程接收事件。例如窗口关闭、窗口最大化等等。您确定在Mac OS X上也可以实现这个功能吗? - Tyler Liu
这是一个非常古老的问题的答案。 :) 我的意思是,如果我们知道原始开发人员试图解决的问题,我们可以推荐替代方法。 - Jonathan Grynspan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接