iPhone如何模拟触屏,输入等事件
目前又有了一个想在iPhone上做协助调试的设想,当然控制权什么的是别说了,就是做一些协助方在自己屏幕上点点划划,被协助方也要有同样的操作,因为被调试程序的不确定性,那只能做成发送各种针对屏幕的模拟事件了。
因为apple没有放出直接发送触屏事件等的API,所以用的都是越狱的iPhone加上PrivateFramework,根本没指望上市,反正就是为了内部调试。
首先在kennytm的网站拔下私有framework的头文件,就本应用而言,只需要GrapicsServices文件夹以及Availability2.h即可。然后导入Xcode目录下Platforms下对应的GraphicsService.framework,准备工作就OK了。
发送事件消息,主要是构造GSEventRecord,简单的事件可能只需要填充GSEventRecord里面的type类型参数,再复杂一些的就需要在结构的后面继续填充,填充大小必须在infoSize参数里指定
GSEventRecord header; GSHardwareKeyInfo key = {0,0,0,0,1,{'a'},1,{'a'},0,0,0,0}; memset(&header, 0, sizeof(header)); header.type = kGSEventKeyDown; header.infoSize = sizeof(GSHardwareKeyInfo); header.timestamp = mach_absolute_time(); struct { GSEventRecord header1; GSHardwareKeyInfo key1; }fuck = {header, key}; GSSendEvent(&fuck, GSGetPurpleApplicationPort());