精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

iPhone模擬觸屏實現事件教程

移動開發 iOS
本文介紹的iPhone模擬觸屏實現事件教程,主要介紹了iphone中事件的問題,我們來看內容。

iPhone模擬觸屏實現事件教程是本文呀介紹的內容,不多說,我們先來看內容。目前又有了一個想在iPhone上做協助調試的設想,當然控制權什么的是別說了,就是做一些協助方在自己屏幕上點點劃劃,被協助方也要有同樣的操作,因為被調試程序的不確定性,那只能做成發送各種針對屏幕的模擬事件了。

因為apple沒有放出直接發送觸屏事件等的API,所以用的都是越獄的iPhone加上PrivateFramework,根本沒指望上市,反正就是為了內部調試。

首先在kennytm的網站拔下私有framework的頭文件,就本應用而言,只需要GrapicsServices文件夾以及Availability2.h即可。然后導入Xcode目錄下Platforms下對應的GraphicsService.framework,準備工作就OK了。

發送事件消息,主要是構造GSEventRecord,簡單的事件可能只需要填充GSEventRecord里面的type類型參數,再復雜一些的就需要在結構的后面繼續填充,填充大小必須在infoSize參數里指定

C代碼 

  1. typedef struct GSEventRecord {     
  2.     GSEventType type; // 0x8     
  3.     GSEventSubType subtype; // 0xC     
  4.     CGPoint location;   // 0x10     
  5.     CGPoint windowLocation; // 0x18     
  6.     int windowContextId;    // 0x20     
  7.     uint64_t timestamp; // 0x24, from mach_absolute_time     
  8.     GSWindowRef window; // 0x2C     
  9.     GSEventFlags flags; // 0x30     
  10.     unsigned senderPID; // 0x34     
  11.     CFIndex infoSize; // 0x38     
  12. } GSEventRecord;    
  13.  
  14. typedef struct GSEventRecord {  
  15.  GSEventType type; // 0x8  
  16.  GSEventSubType subtype; // 0xC  
  17.  CGPoint location;  // 0x10  
  18.  CGPoint windowLocation; // 0x18  
  19.  int windowContextId; // 0x20  
  20.  uint64_t timestamp; // 0x24, from mach_absolute_time  
  21.  GSWindowRef window; // 0x2C  
  22.  GSEventFlags flags; // 0x30  
  23.  unsigned senderPID; // 0x34  
  24.  CFIndex infoSize; // 0x38  
  25. } GSEventRecord; 

頭文件里沒有提供一些便捷方法構造復雜的信息結構,這和public API真是云泥之別。不過一些非常簡單的消息還是可以直接調用的,如void GSEventLockDevice();就相當與構造了一個type為kGSEventLockDevice的GSEventRecord結構再將其發送出去。

用一個稍微復雜的例子,我們向屏幕的{50,50}坐標處發送一個“按下”的指令

C代碼 

  1. #import "GSEvent.h"     
  2. #include <mach/mach_time.h>     
  3. void sendclickevent(){     
  4.     mach_port_t thePortOfApp = GSCopyPurpleNamedPort("com.fuckyou.fuck");     
  5.          
  6.     GSEventRecord header;     
  7.     GSHandInfo click;     
  8.     GSPathInfo pathInfo = {2,2,2,1,1,{50,50}, NULL};     
  9.          
  10.     bzero(&header, sizeof(header));     
  11.     bzero(&click, sizeof(click));     
  12.     
  13.     header.type = kGSEventHand;     
  14.     header.subtype = kGSEventSubTypeUnknown;     
  15.     header.location.x = 50;     
  16.     header.location.y = 50;     
  17.     header.windowLocation.x = 50;     
  18.     header.windowLocation.y = 50;     
  19.     header.infoSize = sizeof(GSHandInfo)+sizeof(GSPathInfo);     
  20.     header.timestamp = mach_absolute_time();     
  21.     
  22.     click.type = kGSHandInfoTypeTouchDown;     
  23.     click.deltaX = 1;     
  24.     click.deltaY = 1;     
  25.     click.pathInfosCount = 1;     
  26.          
  27.     struct    
  28.     {     
  29.         GSEventRecord record;     
  30.         GSHandInfo hand;     
  31.         GSPathInfo path;     
  32.     } record = {header, click, pathInfo};     
  33.          
  34.     GSSendEvent(&record, thePortOfApp);     
  35. }    
  36.  
  37. #import "GSEvent.h"  
  38. #include <mach/mach_time.h> 
  39. void sendclickevent(){  
  40.     mach_port_t thePortOfApp = GSCopyPurpleNamedPort("com.fuckyou.fuck");  
  41.       
  42.     GSEventRecord header;  
  43.     GSHandInfo click;  
  44.     GSPathInfo pathInfo = {2,2,2,1,1,{50,50}, NULL};  
  45.       
  46.     bzero(&header, sizeof(header));  
  47.     bzero(&click, sizeof(click));  
  48.  
  49.     header.type = kGSEventHand;  
  50.     header.subtype = kGSEventSubTypeUnknown;  
  51.     header.location.x = 50;  
  52.     header.location.y = 50;  
  53.     header.windowLocation.x = 50;  
  54.     header.windowLocation.y = 50;  
  55.     header.infoSize = sizeof(GSHandInfo)+sizeof(GSPathInfo);  
  56.     header.timestamp = mach_absolute_time();  
  57.  
  58.     click.type = kGSHandInfoTypeTouchDown;  
  59.     click.deltaX = 1;  
  60.     click.deltaY = 1;  
  61.     click.pathInfosCount = 1;  
  62.       
  63.     struct  
  64.     {  
  65.         GSEventRecord record;  
  66.         GSHandInfo hand;  
  67.         GSPathInfo path;  
  68.     } record = {header, click, pathInfo};  
  69.       
  70.     GSSendEvent(&record, thePortOfApp);  

里面需要注意的是向某應用發送事件,必須獲得該應用的端口,也就是第一行代碼。而發送復雜的信息必須要將若干信息體拼接到一起,自己定義一寫需要的結構體比較合適,并正確填寫信息體的大小,這些技巧仿佛回到了蠻荒時代。我本身看到0長數組,順手就在堆上構造結構了,但這些消息的處理是異步的,我也不清楚何時可以安全地回收內存,所以建議還是使用結構體拼湊的方法。

除了觸屏之外,另一個非常重要的就是鍵盤輸入了,但是iPhone的輸入的特殊性,不太好說是鍵盤輸入,反正就是那個意思。

具體編碼過程其實和觸屏事件沒什么兩樣,不過如果把GSHardwareKeyInfo或者GSKeyInfo這種似乎是鍵盤事件的結構名放google上搜索,一個結果都沒有,一開始我還想湊,花了兩三天實在湊不出來了發現其實可以逆向來嘛,用GSEventCreateKeyEvent創造一個鍵盤事件,然后解析它就是,于是這樣才搞定,而且可悲的發現其實我想得太多了,里面絕大多數成員填0就行了,沒必要為編碼區這些東西煩惱。

Objective-c代碼 

  1. GSEventRecord header;     
  2. GSHardwareKeyInfo key = {0,0,0,0,1,{'a'},1,{'a'},0,0,0,0};     
  3. memset(&header, 0, sizeof(header));     
  4.     
  5. header.type = kGSEventKeyDown;     
  6. header.infoSize = sizeof(GSHardwareKeyInfo);     
  7. header.timestamp = mach_absolute_time();     
  8.     
  9. struct     
  10. {     
  11.     GSEventRecord header1;     
  12.     GSHardwareKeyInfo key1;     
  13. }fuck = {header, key};     
  14. GSSendEvent(&fuck, GSGetPurpleApplicationPort());    
  15.  
  16.     GSEventRecord header;  
  17.     GSHardwareKeyInfo key = {0,0,0,0,1,{'a'},1,{'a'},0,0,0,0};  
  18.     memset(&header, 0, sizeof(header));  
  19.       
  20.     header.type = kGSEventKeyDown;  
  21.     header.infoSize = sizeof(GSHardwareKeyInfo);  
  22.     header.timestamp = mach_absolute_time();  
  23.       
  24.     struct  
  25.     {  
  26.         GSEventRecord header1;  
  27.         GSHardwareKeyInfo key1;  
  28.     }fuck = {header, key};  
  29.     GSSendEvent(&fuck, GSGetPurpleApplicationPort()); 

這樣就可以輸入一個a了,前提是光標必須在輸入框內。

當然后續問題還有很多,這實際上不過是自己的程序向自己的發送事件而已,后面需要做的是程序運行到后臺時向前臺程序甚至是主界面發事件,能否做到,我也不敢肯定。

小結:iPhone模擬觸屏實現事件教程的內容介紹完了,希望本文對你有所幫助!更多相關內容請參考編輯推薦。

責任編輯:zhaolei
相關推薦

2011-06-08 14:26:21

OMSOphoneiPhone

2014-04-29 13:58:11

OpenGL ESAndroid響應觸屏事件

2011-07-13 09:32:05

蘋果iOS 5

2011-07-21 15:56:32

iPhone 截屏

2011-07-25 14:44:41

iPhone iPhone開發 截屏

2009-05-28 09:35:52

2014-02-10 09:30:14

Windows 8.1

2011-03-21 15:23:24

觸屏網頁設計

2013-01-11 13:30:38

觸屏智能手機新聞閱讀

2010-09-10 10:09:26

Android

2011-07-25 15:32:06

iPhone Table 動態

2009-11-04 08:56:03

Windows 7觸摸屏

2011-05-10 17:19:06

戴爾評測

2015-07-28 16:57:52

觸屏手機鍵盤功能機

2012-03-23 10:27:08

觸屏手機點擊區域

2011-04-29 14:24:48

戴爾Insprion

2012-02-29 14:32:18

LifeSize觸屏會議電話視頻會議

2011-08-12 13:19:24

iPhoneSDK安裝

2011-08-10 15:48:10

iPhone網絡

2011-07-21 16:48:19

iPhone 游戲
點贊
收藏

51CTO技術棧公眾號

jizz亚洲女人高潮大叫| 91麻豆精品成人一区二区| 麻豆免费在线| 国产人成亚洲第一网站在线播放 | 黄色在线看片| 91视频在线观看免费| 国产在线拍揄自揄视频不卡99| 免费成年人视频在线观看| 加勒比视频一区| 欧美色中文字幕| av网站大全免费| 999国产在线视频| 成人三级伦理片| 国产精品视频网址| 日韩成年人视频| 亚洲精品一区二区在线看| 精品国精品国产尤物美女| 日韩一级在线免费观看| 亚洲小说区图片| 中文字幕巨乱亚洲| 欧美高清视频一区| 国产乱码精品一区二区| 一区二区91| 欧美成人午夜影院| 在线免费看视频| 一区二区三区日本久久久| 日韩一区二区三区在线观看 | a在线视频v视频| 中文字幕中文字幕在线一区| 久久精品小视频| 欧美三级华人主播| 国产黄色av片| 免费在线观看日韩欧美| 午夜欧美大片免费观看| 亚洲色偷偷综合亚洲av伊人| 亚洲精华一区二区三区| 欧美va日韩va| 在线观看av免费观看| 中文在线免费视频| 亚洲高清中文字幕| 日本精品福利视频| 国产精品va在线观看视色| 国产香蕉久久精品综合网| 国内外成人免费视频| а√中文在线资源库| 久久国产剧场电影| 国产精品久久久久久中文字| 91蜜桃臀久久一区二区| 95精品视频在线| 97se在线视频| av中文字幕观看| 精品一区二区精品| 国产日韩视频在线观看| 最近中文字幕在线观看视频| 久久婷婷麻豆| 日本精品久久久久影院| 黄色在线免费观看| 久久久久久色| 国产精品狠色婷| 18国产免费视频| 日本美女一区二区三区| 国产激情视频一区| 中文在线资源天堂| 激情深爱一区二区| 999热视频在线观看| www.国产三级| av毛片久久久久**hd| 精品日韩电影| 国产一二三区在线| 国产精品美女久久久久久久久 | 四季av一区二区三区| **国产精品| 精品剧情在线观看| 亚洲国产精品成人综合久久久| 老牛精品亚洲成av人片| 亚洲欧美中文日韩在线| 激情高潮到大叫狂喷水| 欧美精品自拍| 国产91成人video| 中文字幕 欧美激情| 精久久久久久久久久久| 国产精品v欧美精品∨日韩| 亚州av在线播放| 国产亚洲成av人在线观看导航| 亚洲永久一区二区三区在线| 在线看三级电影| 欧美日韩激情美女| 亚洲久久中文字幕| 国产精品超碰| 中文字幕国产精品| 久久久久无码国产精品| 亚洲综合三区| 亚洲自拍高清视频网站| 午夜小视频免费| 亚洲同性gay激情无套| 欧美国产视频一区| 精品视频一区二区三区四区五区| 91精品国产丝袜白色高跟鞋| 中文字幕在线永久| 欧美h版在线| 久久久爽爽爽美女图片| 亚洲视屏在线观看| 成人一区二区三区视频在线观看| 欧美日韩一区二区三区在线视频| 高清全集视频免费在线| 欧美性猛交xxxx黑人| 毛毛毛毛毛毛毛片123| 亚洲最好看的视频| 欧美成人中文字幕在线| 国产精品xxxxxx| 成人久久18免费网站麻豆| 日韩亚洲视频| av免费不卡国产观看| 欧美日韩高清在线| xxxxx在线观看| 影音先锋亚洲电影| 亚洲www在线| 成人在线二区| 欧美色道久久88综合亚洲精品| 91aaa精品| 欧美三级三级| 欧美性在线视频| 色呦呦视频在线| 亚洲免费观看高清完整版在线观看| 日韩欧美精品在线观看视频| 免费精品一区| 色偷偷88888欧美精品久久久 | 99热国产在线中文| 欧美色视频一区| 成人免费网站黄| 亚洲青涩在线| 高清国语自产拍免费一区二区三区| 一级毛片视频在线观看| 色欧美乱欧美15图片| 好男人香蕉影院| 激情综合激情| 国产精品久久久久久久久久直播| av色综合久久天堂av色综合在| 欧美自拍丝袜亚洲| 麻豆精品免费视频| 美女网站久久| 欧美二区三区在线| 欧美成人h版| 亚洲片国产一区一级在线观看| 男人的天堂一区二区| 成人免费av资源| 霍思燕三级露全乳照| 中文字幕视频精品一区二区三区| 欧美xxxx做受欧美| 亚洲高清视频网站| 亚洲一级在线观看| 精品无码人妻少妇久久久久久| 国产真实久久| 激情小说综合区| 91精品啪在线观看国产60岁| 亚洲熟妇国产熟妇肥婆| 亚洲一区二区三区免费| 久99久在线视频| 国产黄色一区二区| 亚洲一二三区视频在线观看| 伊人影院在线观看视频| 亚洲五月婷婷| 欧美国产一二三区| 国产激情欧美| 久久视频精品在线| 亚洲av无码一区二区三区dv| 亚洲夂夂婷婷色拍ww47 | 国产69精品久久久久9999人| 亚洲香蕉av在线一区二区三区| www.久久视频| 神马久久影院| 欧美重口另类videos人妖| 日韩av资源站| 欧美在线免费视屏| 欧美色视频一区二区三区在线观看 | 男人的天堂免费| 久久久久电影| 91久久精品国产91久久性色tv| 18av在线视频| 亚洲国产欧美一区二区三区同亚洲 | 欧美一区二区三区成人片在线| 亚洲国产精品尤物yw在线观看| 美女又爽又黄视频毛茸茸| 日韩精品久久理论片| 爱爱爱视频网站| 乱中年女人伦av一区二区| 777777777亚洲妇女| 二区三区在线| 精品区一区二区| 无码人妻久久一区二区三区| 中文字幕日韩av资源站| 野战少妇38p| 毛片一区二区三区| 男人添女荫道口图片| 国产亚洲一卡2卡3卡4卡新区 | 一道本在线免费视频| 欧美国产日本| 亚洲精品欧美精品| 精品福利一区| 91老司机精品视频| 欧美xoxoxo| 午夜精品www| 黄色一级片在线观看| 日韩经典一区二区三区| 国产精品久久久久久久久毛片| 欧美日韩国产精品| 欧美激情图片小说| 欧美国产禁国产网站cc| 网站免费在线观看| 国产成人av电影在线| 欧美婷婷精品激情| 羞羞视频在线观看欧美| 欧美极品少妇无套实战| 久久亚洲国产| 免费成人深夜夜行视频| 成人性生交大片免费看96| 国产精品偷伦视频免费观看国产| 英国三级经典在线观看| 欧美日韩xxxxx| 国产人成网在线播放va免费| 亚洲色图综合网| 亚洲日本香蕉视频| 亚洲成人免费在线视频| 97人妻人人澡人人爽人人精品 | 国产又爽又黄免费软件| 欧美性三三影院| 黄色在线视频网址| 欧美午夜视频在线观看| 国语对白一区二区| 亚洲激情五月婷婷| 日本精品人妻无码77777| 国产精品入口麻豆九色| 少妇久久久久久久久久| 91视视频在线观看入口直接观看www| 欧美性猛交乱大交| 国产麻豆精品久久一二三| 久久黄色片网站| 美女脱光内衣内裤视频久久网站| 最近免费中文字幕中文高清百度| 亚洲综合精品| 亚洲熟妇av一区二区三区| 国产精品久久国产愉拍| 日韩小视频在线播放| 在线观看的日韩av| 免费不卡av在线| 国产日韩一区二区三区在线播放| 久久av综合网| 亚洲黄色影院| 一女被多男玩喷潮视频| 亚洲深夜影院| 国产一区二区三区精彩视频| 国产精品婷婷| 少妇人妻互换不带套| 视频在线观看一区二区三区| 欧美激情精品久久久久久小说| 日韩专区欧美专区| 天堂一区在线观看| 加勒比av一区二区| 日本成人在线免费观看| 国产成人av影院| 国产网站无遮挡| 日本一区二区三区国色天香| 亚洲不卡的av| 一区二区三区四区不卡在线 | 亚洲在线网站| 成人午夜激情av| 精品一区二区在线观看| 老司机av网站| 久久蜜臀中文字幕| 五月婷婷六月香| 亚洲精品视频一区二区| 亚洲国产精品午夜在线观看| 黑人巨大精品欧美一区免费视频 | 校园春色 亚洲| 午夜精品一区二区三区电影天堂| wwwwww国产| 欧美日韩国产一区| 国产成人自拍一区| 国产香蕉一区二区三区在线视频| 欧美性天天影视| 久久久久久久久中文字幕| 天天综合av| 91精品视频一区| 三级小说欧洲区亚洲区| 亚洲国产欧美一区二区三区不卡| 真实国产乱子伦精品一区二区三区| 老太脱裤子让老头玩xxxxx| 日韩福利电影在线观看| 国产探花一区二区三区| 久久无码av三级| 久久久久久久久久网站| 欧美日韩人人澡狠狠躁视频| 亚洲综合精品国产一区二区三区| 日韩精品综合一本久道在线视频| 你懂的在线网址| 久久99青青精品免费观看| xx欧美xxx| 成人3d动漫一区二区三区91| 精品国产123区| 僵尸世界大战2 在线播放| 精品制服美女丁香| 9.1成人看片免费版| 亚洲日穴在线视频| 青青国产在线视频| 亚洲精品美女久久久| 久热国产在线| 欧美一级bbbbb性bbbb喷潮片| 久久久久毛片免费观看| 日本午夜精品一区二区| 精品成人一区| 人妻换人妻仑乱| 国产精品丝袜久久久久久app| 日韩aaaaaa| 欧美一二三区在线| 视频三区在线| 国产精品 欧美在线| 美女视频免费精品| 奇米777四色影视在线看| 欧美aaa在线| 日韩乱码人妻无码中文字幕久久| 亚洲国产视频直播| 国产成人精品白浆久久69| 中文字幕日韩免费视频| 韩国美女久久| 蜜桃视频在线观看成人| 99亚洲伊人久久精品影院红桃| theporn国产精品| 国产精品久久久久一区二区三区| 亚洲图片在线视频| 精品视频中文字幕| 日韩激情电影| 美女亚洲精品| 美女精品在线| 一色道久久88加勒比一| 欧美性色视频在线| 免费在线黄色影片| 欧美孕妇与黑人孕交| 免费观看成人www动漫视频| 免费看欧美黑人毛片| 国产成a人亚洲精品| 四虎免费在线视频| 日韩精品资源二区在线| 成人影院在线看| 3d精品h动漫啪啪一区二区| 亚洲一区欧美| 色诱av手机版| 亚洲一二三专区| 性感美女福利视频| 情事1991在线| 欧美日韩第一| 中文字幕久久av| 亚洲精品中文字幕在线观看| 国产日韩欧美中文字幕| 欧美日本高清视频| 国产无遮挡裸体免费久久| 国产原创popny丨九色| 91原创在线视频| 免费av中文字幕| 色婷婷综合久久久久| 青草伊人久久| 六月婷婷激情综合| 99精品1区2区| 久久国产香蕉视频| 成年无码av片在线| 大奶在线精品| 别急慢慢来1978如如2| 国产精品久久看| www黄色在线观看| 欧美亚洲在线观看| 91麻豆国产自产在线观看亚洲| 成人在线短视频| 欧美日韩免费看| 永久免费av在线| 国产高清一区视频| 久久亚洲美女| 日韩女优一区二区| 亚洲精品电影在线| 欧美高清免费| 激情伊人五月天| 国产精品国产精品国产专区不蜜 | av不卡在线播放| 国产日韩在线免费观看| 欧美成人自拍视频| 男男gay无套免费视频欧美| 伊人影院综合在线| 黄色成人av在线| 麻豆视频在线观看免费| 国产麻豆乱码精品一区二区三区| 狂野欧美一区| 久久久久噜噜噜亚洲熟女综合| 亚洲亚裔videos黑人hd| 欧美欧美在线| 自拍偷拍 国产| 亚洲国产乱码最新视频| 日本免费在线视频| 久久国产精品免费一区| 九九九久久久精品| www.国产com| 久久国产精品久久久久| 国产乱码精品一区二区亚洲 |