gpt4 book ai didi

swift - CGEvent.tapCreate 返回 nil 即使禁用了沙箱

转载 作者:可可西里 更新时间:2023-11-01 01:57:49 24 4
gpt4 key购买 nike

我有一个带有 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)
}

TL;DR:如何授予 macOS 应用程序运行 CGEventTapCreate 的权限?

最佳答案

我遇到了同样的问题,沙箱被禁用了。

我使用“cgevent.tapcreate”来监听键盘事件。在 xode 中运行没问题,但我的应用程序在存档后无法运行。

然后在apple的官方文档中找到了下面这句话: doc link

Access for assistive devices is enabled. In OS X v10.4, you can enable this feature using System Preferences, Universal Access panel, Keyboard view.

辅助功能需要申请权限,代码使用swift 4:

func acquirePrivileges() {
let trusted = kAXTrustedCheckOptionPrompt.takeUnretainedValue()
let privOptions = [trusted: true] as CFDictionary
let accessEnabled = AXIsProcessTrustedWithOptions(privOptions)

if accessEnabled == true {

} else {

}
}

希望对你有帮助

关于swift - CGEvent.tapCreate 返回 nil 即使禁用了沙箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49916822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com