我有一个带有 swift 桥的 C 文件,我可以调用我的 macos 程序并且它工作正常。
但是它有一个函数 CGEventTapCreate 只能在终端中使用 sudo 才能工作,否则它会返回 null,就是这种情况。
所以我把 C 代码移植到 Swift,但该函数仍然返回 nil,因为它没有特权。常见的解决方案是禁用沙箱,但问题仍然存在。
let eventTap : CFMachPort? =
CGEvent.tapCreate ( tap: CGEventTapLocation.cgSessionEventTap
, place: .headInsertEventTap
, options: CGEventTapOptions.defaultTap
, eventsOfInterest: mask
, callback: myCGEventCallback
, userInfo: nil )
if eventTap == nil { -- always enter here
print("[Swift] Failed to create event tap :(")
exit(1)
}
Run Code Online (Sandbox Code Playgroud)
TL;DR:如何授予 macOS 应用程序运行 CGEventTapCreate 的权限?