LoginSignup
4
5

More than 5 years have passed since last update.

MacからiPhoneのスクリーンショットを取得

Posted at

ソシャゲがだるいので自動化しようとしていた際の覚え書き
スクリーンショットはオートで取れるが脱獄せずにタップ操作を発生させるのが予想以上に大変でお蔵入りになった

MacからiPhoneのスクリーンショットを取得

YosemiteからQuick Time PlayerのMovie RecordingでiPhone画面を表示できるようになったのでそれを使う。


- (CGImageRef)getIPhoneScreenshot {

    CGWindowID windowID = [self getMovieRecordingWindowID];

    CGWindowImageOption imageOptions = kCGWindowImageDefault;
    CGWindowListOption singleWindowListOptions = kCGWindowListOptionIncludingWindow;
    CGRect imageBounds = CGRectNull;

    return CGWindowListCreateImage(imageBounds, singleWindowListOptions, windowID, imageOptions);
}

- (CGWindowID)getMovieRecordingWindowID {

    CGWindowListOption windowListOption = kCGWindowListOptionAll | kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements;
    CFArrayRef windowList = CGWindowListCopyWindowInfo(windowListOption, kCGNullWindowID);

    NSInteger listCount = CFArrayGetCount(windowList);

    for (CFIndex i = 0; i < listCount; i++) {

        CFDictionaryRef windowInfo = CFArrayGetValueAtIndex(windowList, i);

        CGWindowID windowID = 0;
        CFNumberGetValue(CFDictionaryGetValue(windowInfo, kCGWindowNumber), kCGWindowIDCFNumberType, &windowID);

        CFStringRef windowName = CFDictionaryGetValue(windowInfo, kCGWindowName);

        if ([(__bridge NSString *)windowName isEqualToString:@"Movie Recording"]) {
            return windowID;
        }
    }
    return 0;
}

スクリーンの操作

タップ

・iPhone背面のケースとスクリーンを同通するとタップとして認識される
・まずスクリーンに端を解放した導線を接触させておいて、次に解放端を握った時もタップとして認識された
・実験してみたところ、画面につける端子は面積(1~2cm^2以上)が必要
・画面に導線を接触させておき、トランジスタやFETで導通させることでタップを発生させるのはうまくいかなかった。物理スイッチではできたのでリレーならなんとかなるかも

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5