Tag: privateapi ios6

从iOS应用程序截图 – 模拟显示logging(在内部查询)

我需要创build一个iOS应用程序,其中可以截取其他应用程序,video等作为实验的一部分。 我打开使用私人API的,因为我不会将应用程序发布到应用程序商店。 我可以成功地使用方法GetUIScreenImage()拍摄当前屏幕(应用程序屏幕)的快照。 但是,由于沙箱限制,我无法在后台截取屏幕截图。 我得到的错误 – “不能调用CreateUIScreenImage()而应用程序在后台”。 我提到了这篇文章 – iOS应用程序显示logging器如何在不使用私有API的情况下logging屏幕? 其中build议使用IOMobileFramebuffer和IOSurface来绕过沙盒限制,也可以使用这个链接 – http://www.iphonesheep.com/2009/11/25/iphone%E2%80%99s-framebuffer-secrets-revealed/ 。 但是我无法获得创build和转移表面的stream程。 任何有关这个话题的帮助,高度赞赏。 另外,有没有办法在越狱设备的后台调用UIGetScreenImage()? 更新: 我能够抓住主屏幕表面,并把它放在应用层,但我的用例是能够打开其他应用程序,并能够通过我创build的应用程序来logging它们。 然而,粘贴在我的应用层上的表面是静态的。 编辑 这是我的理解 – 附加到主显示图层的主屏幕表面需要放在当前图层上。 这样做后,我应该能够浏览其他应用程序,从刚刚粘贴的表面打开它们。 这里是代码(它将主屏幕表面放在应用层的顶部,但我无法使用该表面,即打开应用程序等): IOMobileFramebufferConnection connect; kern_return_t result; CoreSurfacebufferRef screenSurface = NULL; io_service_t framebufferService = IOServiceGetMatchingService (kIOMasterPortDefault, IOServiceMatching ("AppleH1CLCD")); if(!framebufferService) io_service_t framebufferService = IOServiceGetMatchingService (kIOMasterPortDefault, IOServiceMatching ("AppleM2CLCD")); if(!framebufferService) io_service_t framebufferService = IOServiceGetMatchingService (kIOMasterPortDefault, […]