在iOS 6上发送全球触控事件
我想建立一个自动的iOS应用程序测试框架。我可以通过IOHIDFamily录制触摸事件,有没有办法重播 我试过这样做在iOS 6上发送全球触控事件,ios,iphone-privateapi,Ios,Iphone Privateapi,我想建立一个自动的iOS应用程序测试框架。我可以通过IOHIDFamily录制触摸事件,有没有办法重播 我试过这样做 void sendclickevent(){ mach_port_t thePortOfApp = GSCopyPurpleNamedPort("com.fuckyou.fuck"); GSEventRecord header; GSHandInfo click; GSPathInfo pathInfo =
void sendclickevent(){
mach_port_t thePortOfApp = GSCopyPurpleNamedPort("com.fuckyou.fuck");
GSEventRecord header;
GSHandInfo click;
GSPathInfo pathInfo = {2,2,2,1,1,{50,50}, NULL};
bzero(&header, sizeof(header));
bzero(&click, sizeof(click));
header.type = kGSEventHand;
header.subtype = kGSEventSubTypeUnknown;
header.location.x = 50;
header.location.y = 50;
header.windowLocation.x = 50;
header.windowLocation.y = 50;
header.infoSize = sizeof(GSHandInfo)+sizeof(GSPathInfo);
header.timestamp = mach_absolute_time();
click.type = kGSHandInfoTypeTouchDown;
click.deltaX = 1;
click.deltaY = 1;
click.pathInfosCount = 1;
struct
{
GSEventRecord record;
GSHandInfo hand;
GSPathInfo path;
} record = {header, click, pathInfo};
GSSendEvent(&record, thePortOfApp);
}
应用程序的端口返回非零。但在这个功能结束时,例如按下一个按钮,什么也没发生。出什么事了?或者我需要另一种方式将触控事件发送到iOS UI?看看其他一些与在应用程序之外发送事件相关的问题: 注释 1) 我认为你应该先发触地得分,然后再发触地得分来获得点击 2) 我在本主题中看到的大多数代码都使用了GSGetPurpleSystemAppPort(),它允许发送系统范围的事件(vs gsCopyPurpleNamePort) 我相信GSCopyPurpleNamedPort只是执行通常的引导查找端口。所以,它会找到一个端口,即使它不是紫色端口(这很可能适用于“com.fuckyou.fuck”)