gpt4 book ai didi

iphone - 使用 GraphicsServices.h/GSEvent 以及使用 Xcode 编译 CLI iPhone 工具

转载 作者:行者123 更新时间:2023-12-03 20:01:14 30 4
gpt4 key购买 nike

我将其发送给 KennyTM(在 GitHub 上有所有私有(private)框架 header ),但我想我也应该在这里问,以防万一有人有一些好的想法或任何方法来帮助我。

我正在尝试编写一个命令行实用程序,用于发送 GSEvent 来操作键盘、触摸/拖动屏幕上的元素以及操作硬件按钮(音量、主页、 sleep 等)

我捕获了 MouseSupport 代码并尝试查看它,但我找不到发送 GSEvents 的最简单方法。我希望这里有人可以帮助我。

首先,声明 GSEvent 并发送它的最简单方法是什么?我查看了 iPhone 开发 wiki,但文档非常模糊。我知道我必须将这些事件发送到一个紫色事件端口(?),但我不明白该怎么做。有人可以提供一些示例,例如触摸坐标、键入某个键或按下硬件按钮吗?

另外,如果我希望这个实用程序能够像 Springboard 一样操作所有应用程序,我是否必须编写或执行任何特殊操作?我不知道这是否是一个特殊情况,因为我希望它在操作系统级别。理想情况下,我会通过 SSH 连接到手机,启动程序,然后它将发送 GSEvent,这些事件将由打开的任何应用程序处理。

至于编译这段代码,在Xcode下有什么办法吗?我不知道应该使用哪种项目模板(如果有的话),这让我很失望。我不需要“构建并运行”支持,我非常乐意将程序发送到电话上。据我了解,在手机上编译代码也是可行的。我的手机上有 SDK 中的所有 header 以及 iphone-gcc,但是在编译一些测试程序时,我仍然收到有关找不到 mach header 和 CoreFoundation 的错误。有没有更简单的方法来做到这一点?

最后,是否还有其他指南或文献可供我引用以了解更多相关信息?我很高兴能够参与开放式 iPhone 开发(我有使用官方 SDK 的经验,但我想更深入)。

感谢人们提供的所有帮助!

最佳答案

First, what's the simplest way to declare a GSEvent and send it?

这取决于 GSEvent 的类型。有些事件具有方便的功能,可以一步创建和发送,例如GSEventLockDevice()。但HID事件(触摸、按键等)不具备这些简单的功能。原因可能是因为 GSEventLockDevice() 等将应用程序发送到 SpringBoard,但 HID 事件 SpringBoard 发送到应用程序。因此,只有SpringBoard团队需要知道如何构造一个复杂的GSEvent。

无论如何,要创建 HID 事件(例如加速度计事件),您不需要创建 GSEvent。只需使用GSSendEvent():

// (not tested.)

GSAccelerometerInfo accel = {0.0f, 0.0f, 1.0f};
GSEventRecord header;
memset(&header, 0, sizeof(header));
header.type = kGSEventAccelerate;
header.infoSize = sizeof(accel);
header.timestamp = mach_absolute_time();
// fill in other members.

struct {
GSEventRecord record;
GSAccelerometerInfo info;
} record = {header, accel};

// ... see below ...

GSSendEvent(&record, thePortOfApp);

但是什么是“应用程序端口”?不幸的是没有函数可以实现这一点。从 3.1 开始,mach 端口的名称与其捆绑 ID 相同,因此您可以使用:

mach_port_t thePortOfApp = GSCopyPurpleNamedPort("com.unknown.appBundleID");
...
mach_port_deallocate(mach_task_self(), thePortOfApp); // remember to release the port.
<小时/>

Also, do I have to write or do anything special if I want this utility to operate all applications as well as Springboard?

据我所知,没有。

<小时/>

对于另外两个问题,您可能应该将它们分成单独的问题。

关于iphone - 使用 GraphicsServices.h/GSEvent 以及使用 Xcode 编译 CLI iPhone 工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3017367/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com