मैं आईफोन में टच इवेंट इंजेक्ट करना चाहता हूं। मुझे नेटवर्क सॉकेट के माध्यम से टच इवेंट के निर्देशांक मिलते हैं। GSSendEvent अच्छा विकल्प प्रतीत होता है। हालांकि, इसे इनपुट में से एक के रूप में GSEventRecord की आवश्यकता है।GSSendEvent - इंजेक्ट टच इवेंट आईओएस
क्या कोई जानता है कि GSEventRecord कैसे तैयार किया जाए? मैंने इसे कुछ उदाहरणों के आधार पर तैयार किया लेकिन ऐप GSSendEvent कॉल के बाद क्रैश हो गया।
किसी भी मदद की सराहना करें।
-(void) handleMouseEventAtPoint:(CGPoint) point
{
static mach_port_t port_;
// structure of touch GSEvent
struct GSTouchEvent {
GSEventRecord record;
GSHandInfo handInfo;
} ;
struct GSTouchEvent *touchEvent = (struct GSTouchEvent *) malloc(sizeof(struct GSTouchEvent));
bzero(touchEvent, sizeof(touchEvent));
// set up GSEvent
touchEvent->record.type = kGSEventHand;
touchEvent->record.windowLocation = point;
touchEvent->record.timestamp = GSCurrentEventTimestamp();
touchEvent->record.infoSize = sizeof(GSHandInfo) + sizeof(GSPathInfo);
touchEvent->handInfo.type = getHandInfoType(0, 1);
touchEvent->handInfo.pathInfosCount = 1;
bzero(&touchEvent->handInfo.pathInfos[0], sizeof(GSPathInfo));
touchEvent->handInfo.pathInfos[0].pathIndex = 1;
touchEvent->handInfo.pathInfos[0].pathIdentity = 2;
touchEvent->handInfo.pathInfos[0].pathProximity = 1 ? 0x03 : 0x00;
touchEvent->handInfo.pathInfos[0].pathLocation = point;
port_ = GSGetPurpleSystemEventPort();
GSSendEvent((GSEventRecord*)touchEvent ,port_);
}
static GSHandInfoType getHandInfoType(int touch_before, int touch_now){
if (!touch_before) {
return (GSHandInfoType) kGSHandInfoType2TouchDown;
}
if (touch_now) {
return (GSHandInfoType) kGSHandInfoType2TouchChange;
}
return (GSHandInfoType) kGSHandInfoType2TouchFinal;
}
हाय ईएलडी - सहायता के लिए धन्यवाद। मैंने कोशिश की और यह objc_msgSend में दुर्घटनाग्रस्त हो गया। – Jailbroken
ठीक है, कृपया मेरी परियोजना को जिथब पर देखें ... https: //github.com/entryleveldev/touchy – pt2121
बहुत अच्छी तरह से काम किया! बहुत धन्यवाद। – Jailbroken