无法在 macOS Mojave 应用程序中模拟击键
Unable to simulate keystrokes in macOS Mojave app
我需要在 macOS Mojave 应用程序 (Xcode 10.3) 中模拟用户键盘输入(例如,键入字母 'a')。我正在尝试在这个问题中使用 posted 代码:
但是,在我的应用程序请求控制系统事件的权限并且我 运行 下面的代码块之后,什么也没有发生(除了让我知道代码块实际上正在执行的语句打印之外) .代码 运行s 没有任何错误,但我没有任何功能。
我已确保我的应用未被沙盒化,并且我的应用有权控制我的计算机和系统事件(在安全和隐私方面)。
这是我正在使用的代码(其中 99% 来自上面链接的 post):
let eventSource = CGEventSource(stateID: CGEventSourceStateID.hidSystemState)
let key: CGKeyCode = 0 // virtual key for 'a'
let eventDown = CGEvent(keyboardEventSource: eventSource, virtualKey: key, keyDown: true)
let eventUp = CGEvent(keyboardEventSource: eventSource, virtualKey: key, keyDown: false)
let location = CGEventTapLocation.cghidEventTap
eventDown?.post(tap: location)
eventUp?.post(tap: location)
知道为什么这对我不起作用吗?
您需要在info.plist
中添加"Privacy - AppleEvents Sending Usage Description"
每当您对代码进行任何更改时,您都必须再次禁用和启用应用程序的安全和隐私权限 -> 辅助功能
我需要在 macOS Mojave 应用程序 (Xcode 10.3) 中模拟用户键盘输入(例如,键入字母 'a')。我正在尝试在这个问题中使用 posted 代码:
但是,在我的应用程序请求控制系统事件的权限并且我 运行 下面的代码块之后,什么也没有发生(除了让我知道代码块实际上正在执行的语句打印之外) .代码 运行s 没有任何错误,但我没有任何功能。 我已确保我的应用未被沙盒化,并且我的应用有权控制我的计算机和系统事件(在安全和隐私方面)。 这是我正在使用的代码(其中 99% 来自上面链接的 post): 知道为什么这对我不起作用吗?
let eventSource = CGEventSource(stateID: CGEventSourceStateID.hidSystemState)
let key: CGKeyCode = 0 // virtual key for 'a'
let eventDown = CGEvent(keyboardEventSource: eventSource, virtualKey: key, keyDown: true)
let eventUp = CGEvent(keyboardEventSource: eventSource, virtualKey: key, keyDown: false)
let location = CGEventTapLocation.cghidEventTap
eventDown?.post(tap: location)
eventUp?.post(tap: location)
您需要在info.plist
中添加"Privacy - AppleEvents Sending Usage Description"
每当您对代码进行任何更改时,您都必须再次禁用和启用应用程序的安全和隐私权限 -> 辅助功能