我正在尝试使用Hook Cocoa API。
我知道cocoa提供了一个公共api用于挂钩,因此可以挂钩系统函数并检索信息,如上下文的当前字体设置。
我也试图从可可中挂钩绘制api。
有人能指出我如何实现的细节。或者一些关于挂钩Cocoa API的参考文献?
通过Hooking,我的意思是“控制特定代码执行的基本技术。它提供了一种简单的机制,可以轻松改变操作系统的行为以及第三方产品,而无需提供源代码。 “
我的要求是,如果任何应用程序/系统正在绘制某些东西,那么我希望那些绘制指令应该首先来找我。然后我无法存储这些命令,以便稍后进行处理。
答案 0 :(得分:3)
您正在寻找的术语类似于“系统范围的代码注入”,而Cocoa不为任何此类事物提供API。您需要查看mach_star或SIMBL之类的内容。但老实说,这是其中一个问题,如果你不得不问,它对你来说可能有点先进。修改其他进程的代码是一个巨大的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查看屏幕更新时间。