如何检测屏幕捕获被取消?

发布于 2024-12-29 09:21:45 字数 517 浏览 0 评论 0原文

我通过模拟快捷方式“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 取消屏幕捕获,计时器不知道,它会继续检查粘贴板。那么,如何检测屏幕截图被取消呢?

I'v activated screen capture by simulate shortcut "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);

and set up a NSTimer to check pasteboard's changeCount. if "changeCount" has changed, means capture was done.

But the problem is , if I press ESC to cancel screen capture, timer didn't know that, it will continue to check the pasteboard. So, How to detect screen capture is canceled ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

再浓的妆也掩不了殇 2025-01-05 09:21:45

不要通过按硬编码的按键序列来启动屏幕截图(正如 omz 在他的评论中指出的那样,这可能是错误的),而是使用 NSTask 来运行 屏幕截图。如果进程在未创建其输出文件的情况下退出,则用户取消。

Instead of starting the screenshot by pressing a hard-coded key sequence (which, as omz noted in his comment, may be the wrong one), use NSTask to run screencapture. If the process exits without having created its output file, the user canceled.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文