我通过模拟快捷键“cmd-shift-ctrl-4”激活了屏幕捕获。
CGEventRef keyEventDown = CGEventCreateKeyboardEvent(NULL,keyCode,true);
CGEventSetFlags(keyEventDown,flags);
CGEventRef keyEventUp = CGEventCreateKeyboardEvent(NULL, keyCode, false);
CGEventSetFlags(keyEventUp,flags);
CGEventPost(kCGSessionEventTap, keyEventDown);
CGEventPost(kCGSessionEventTap, keyEventUp);
并设置NSTimer以检查粘贴板的changeCount。如果“changeCount”已更改,则意味着捕获已完成。
但问题是,如果我按ESC取消屏幕捕获,计时器不知道,它将继续检查粘贴板。那么,如何检测屏幕截图被取消?
答案 0 :(得分:2)
不是通过按下硬编码的键序列来启动屏幕截图(正如omz在他的评论中指出的那样,可能是错误的键序列),而是使用NSTask来运行screencapture。如果进程退出但未创建其输出文件,则用户取消。