挂钩Cocoa API?

时间:2010-11-23 09:48:41

标签: cocoa macos hook

我正在尝试使用Hook Cocoa API。

我知道cocoa提供了一个公共api用于挂钩,因此可以挂钩系统函数并检索信息,如上下文的当前字体设置。

我也试图从可可中挂钩绘制api。

有人能指出我如何实现的细节。或者一些关于挂钩Cocoa API的参考文献?

通过Hooking,我的意思是“控制特定代码执行的基本技术。它提供了一种简单的机制,可以轻松改变操作系统的行为以及第三方产品,而无需提供源代码。 “

我的要求是,如果任何应用程序/系统正在绘制某些东西,那么我希望那些绘制指令应该首先来找我。然后我无法存储这些命令,以便稍后进行处理。

4 个答案:

答案 0 :(得分:3)

您正在寻找的术语类似于“系统范围的代码注入”,而Cocoa不为任何此类事物提供API。您需要查看mach_starSIMBL之类的内容。但老实说,这是其中一个问题,如果你不得不问,它对你来说可能有点先进。修改其他进程的代码是一个巨大的PITA甚至更难做到,即使有足够的帮助就像mach_star提供的那样。如果你想看看有多难,请看看Unsanity's site。这是在OS X上开创代码注入的公司,它们的整个产品线都是以它为基础的 - 而且它们的许多程序仍然与OS X 10.6不兼容。

答案 1 :(得分:2)

您选择的字词以及它们涵盖的范围非常宽,建议您从一开始就要开始。有一个简单的Cocoa应用程序tutorial here。它将引导您完成为Mac创建Cocoa应用程序的基本过程。从那里开始,然后发布更具体的问题。

答案 2 :(得分:1)

...包括

#import <objc/objc.h>
#import <objc/runtime.h>

将允许您有权在运行时修改类和对象。虽然这是“鲁莽的”。

更好的想法是使用Objective-C Categories进行更“安全”的访问。

答案 3 :(得分:1)

您不能截取其他应用程序的绘图,但您可以在事后捕获结果。使用Quartz Window Services截取屏幕截图,Quartz Display Services查看屏幕更新时间。