我试图使用SIMBL修改程序的行为(我没有它的来源).我使用了类转储,发现我需要覆盖一个实例方法
此方法位于名为controller的类中.我需要做的就是获得参数arg1,就是这样.也许NSLog它或发布通知...我读到了Objective-c中的方法调配但我怎么能用它?我需要引用我没有的课程MessageController.
谢谢!
致力于所有喜欢低级别Window Server(CoreGraphicsPrivate.h等),Mac上的X11,SIMBL等疯狂的东西:)
Mac上有一个简单的X11仿真应用程序(如xterm,xeyes等),只有一个窗口.在运行时,X11以某种方式创建了一个原生的Quartz窗口来表示这个模拟的应用程序,这个窗口可以通过Quartz Window Services访问,这样我就可以得到它的CSWindowID,标题,位置,大小和所有者的PID(X11.app的PID).但是它不支持Accessibility API,所以没有办法控制它(除了,可能是来自同一进程的Core Graphichs私有函数).
现在,这是任务:
我需要在这样的窗口上托管一个额外的NSView(或者只是画一些东西).我的意思是一个原生的Quartz窗口,它出现在X11模拟某些应用程序的结果中.我知道,要在Mac上操作Windows,我必须在同一个过程中,即X11.app.
我写了一个SIMBL插件,它插入了X11.app进程.
在那里我可以调用[NSApp windows],但是我总是得到2个NSWindows,这与实际应用程序的窗口没有任何共同之处.它们甚至在屏幕上都不可见.
然而,当我调用NSWindowList()时,我得到了我需要的任何东西(X11窗口的窗口ID)甚至更多(来自其他应用程序的窗口ID).
当我为X11模拟的窗口获得CSWindowID时,我调用[NSApp windowWithWindowNumber:](Cocoa)和HIWindowFromCGWindowID()(Carbon),但它们都返回nil!从同样的过程!
顺便说一句,当我进入Safari进程和其他人时,所有这些操作都能很好地工作......
所以,问题是:
X11是如何创建这样的窗口的,这些窗口无法通过同一个进程访问?
我怎样才能获得指向X11窗口(NSWindow*,CGContextRef,或者至少任何东西......)的指针并托管我的图形(我甚至不谈NSView)?
非常感谢提前!
你能用SIMBL开发iPhone Safari的插件吗?
simbl ×3
cocoa ×2
cocoa-touch ×1
iphone ×1
macos-carbon ×1
methods ×1
objective-c ×1
safari ×1
swizzling ×1
x11 ×1