GSSendEvent - Injizieren Sie das Touch Event iOS

8

Ich möchte Touch-Ereignis in iPhone injizieren. Ich erhalte die Koordinaten des Berührungsereignisses über die Netzwerkbuchse. GSSendEvent scheint eine gute Wahl zu sein. Es benötigt jedoch GSEventRecord als eine der Eingaben.

Kann jemand GSEventRecord vorbereiten? Ich habe es anhand einiger Beispiele vorbereitet, aber die App stürzt nach dem Aufruf von GSSendEvent ab.

Schätzen Sie jede Hilfe.

%Vor%     
Jailbroken 23.04.2013, 03:47
quelle

2 Antworten

6

Nur auf iOS 6 getestet

Sie sind tatsächlich auf dem richtigen Weg. Das Problem ist, dass Sie herausfinden müssen, welche Werte Sie diesen Variablen zuweisen sollten.

Zunächst müssen Sie GraphicsServices.h importieren. Dann können Sie den folgenden Code mit dem Port versuchen, den Sie von Wie finde ich den violetten Port für die vorderste Anwendung in IOS 5 und darüber? .

Ich bin kein iOS-Experte und Apple stellt keine Dokumentation zur Verfügung, daher kann ich nicht viel erklären, was hier vor sich geht. (Es passiert mir gut.)

Wie auch immer, Sie können damit im xcode-Debug-Modus spielen, um zu sehen, was unter der Haube passiert.

%Vor%

Um diesen Code zu verwenden, müssen Sie ihn mehrmals aufrufen. Für einen Tipp gibt es Touchdown, Touch-Drag und dann Touch-Up.

Beachten Sie auch, dass pathProximity 0 ist, wenn die Touch-Funktion aktiviert ist.

Soweit ich mich erinnere, spielt der winRef keine Rolle.

Hoffe, das hilft.

Bearbeiten: Aus dem Kommentar von Bugivore lautet das Problem:

  

Die Art, wie ich touchEvent über malloc zugewiesen habe, war falsch. Es sollte getan werden, wie EntryLevelDev zeigte - "statisches uint8_t handJob [sizeof (GSEventRecord) + sizeof (GSHandInfo) + sizeof (GSPathInfo)];"

    
pt2121 24.04.2013, 02:08
quelle
3

Antwort von EntryLevelDev ist korrekt, aber ein Teil des Wertes ist nicht so wichtig. Ich habe die untenstehenden Codes von woanders und habe einige Versuche und Fehler gemacht, hier sind meine Codes (arbeitete für till latested ios6).

Und arbeitet jetzt jemand an IOS7? Ich konnte es nicht zur Arbeit bringen. Siehe meinen Beitrag hier: Mit GSCopyPurpleNamedPort (appId) in GraphicsServices in IOS7 veraltet, was ist der alternative Ansatz?

%Vor%     
user2485972 25.07.2013 10:46
quelle