在macOS swift 5上检测屏幕截图

在macOS swift 5上检测屏幕截图,swift,swift5,macos-big-sur,Swift,Swift5,Macos Big Sur,在线搜索有关通过文件元数据检测屏幕截图的信息时,我发现了以下方法来检测使用NSMetadataQuery拍摄的屏幕截图: 导入快捷界面 @主要 结构ShareZApp:App{ @NSApplicationedLegateAptor(AppDelegate.self)var AppDelegate var body:一些场景{ 窗口组{ ContentView() } } } 类AppDelegate:NSObject、NSApplicationDelegate、NSMetadataQueryD

在线搜索有关通过文件元数据检测屏幕截图的信息时,我发现了以下方法来检测使用
NSMetadataQuery拍摄的屏幕截图:

导入快捷界面
@主要
结构ShareZApp:App{
@NSApplicationedLegateAptor(AppDelegate.self)var AppDelegate
var body:一些场景{
窗口组{
ContentView()
}
}
}
类AppDelegate:NSObject、NSApplicationDelegate、NSMetadataQueryDelegate{
let query=NSMetadataQuery()
func applicationdFinishLaunching(uu通知:通知){
let center=NotificationCenter.default
center.addObserver(self,选择器:#选择器(queryUpdated(notification:)),名称:NSNotification.name.NSMetadataQueryDidStartGathering,对象:query)
center.addObserver(self,选择器:#选择器(queryUpdated(notification:)),名称:NSNotification.name.nsmetadataqueryidupdate,对象:query)
center.addObserver(self,选择器:#选择器(queryUpdated(notification:)),名称:NSNotification.name.nsMetadataQueryDifinishGathering,对象:query)
query.delegate=self
query.searchScopes=[]
query.enableUpdates()
query.predicate=NSPredicate(格式:“kMDItemIsScreenCapture=1”)
query.start()
}
@objc func查询更新(通知:NSNotification){
打印(通知)
}
脱硝{
印刷品(“脱硝”)
}
}
不幸的是,这种方法不起作用,从在线来源来看,macOS 10.15似乎在检测类似事件时做了一些更改。这里也是这样吗?在屏幕截图上运行
xattr
命令也会显示meta标记,因此它没有被删除:


或者是否有其他方法检测此元标记?我正在运行macOS Big Sur 11.2.3。

因此,似乎有一种更简单的方法来实现我的目标,我可以调用
/usr/sbin/screencapture
可执行文件来创建屏幕截图,并使用
-I-r
标志来指定输出路径