スクリーン グラブ (SonOfGrab で確認できます) を実行するために必要なロジックがあると仮定すると、ジョブを実行するためにディスパッチ キューまたはタイマーを使用するだけです。
void MyTakeScreengrab();
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
dispatch_source_t timerSrc = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,0,0,queue);
dispatch_source_set_timer(timerSrc,
dispatch_time(DISPATCH_TIME_NOW,0) /* start on */,
SECONDS_PER_GRAB * NSEC_PER_SEC /* interval */,
NSEC_PER_SEC /* leeway */);
dispatch_source_set_event_handler_f(timerSrc, MyTakeScreengrab);
dispatch_resume(timerSrc);
NSTimer も使用できます。
-(void)setup {
_timer = [[NSTimer scheduledTimerWithTimeInterval: (NSTimerInterval)SECONDS_PER_GRAB
target: self
selector: @selector(takeScreegrabOnBGThread:)
userInfo: @{ @"folderPath" : MyFolderPath(),
@"imageSettings" : MYCGImageSettings() }
repeats: YES];
[_timer fire];
}
-(void)takeScreengrabOnBGThread:(id)userInfo {
[self performSelectorInBackground:@selector(takeScreengrabBlocking:)
withObject:userInfo];
}
-(void)takeScreengrabBlocking:(id)userInfo {
MyTakeScreengab(userInfo);
}
ターミナルを使用してこれを行うには、探しているコマンドはscreencapture(1)
.