我为我的应用程序禁用了菜单栏,因此当打开窗口时,左上方没有菜单。现在我要执行以下操作:
例如:
当我的窗口位于“ Chrome”窗口的前面时,然后当我将焦点放在窗口上时,菜单栏仍显示“ Chrome”的菜单。现在,当我激活窗口时,我想将快捷事件转移到Chrome,我试图输入“ command + Q”,但是它没有任何作用。那么我该如何务实地做到这一点?
monitor = NSEvent.addGlobalMonitorForEvents(matching: mask, handler: handler)
答案 0 :(得分:0)
我认为这对用户使用您的应用存在安全风险。您可以在不通知用户的情况下监视任何按键输入(密码)。使用沙盒应用程序,将很难对其进行存档,但是我知道可行的一种方法是使用Apple Script转发事件,如以下示例所示。这也可以与ScriptingBridge或Accessibility框架一起使用,但是我自己没有使用它。当然,您首先必须要问窗口服务器当前在应用程序下方的屏幕(窗口索引,框架)上可以看到哪个应用程序(窗口)。
使用Apple脚本发送击键:
tell application "Firefox"
activate
end tell
delay 1
tell application "System Events"
keystroke "l" using {command down}
set the clipboard to ("[@URL]")
keystroke "v" using {command down}
keystroke return
end tell
获取窗口列表:
let options = CGWindowListOption(arrayLiteral: CGWindowListOption.excludeDesktopElements, CGWindowListOption.optionOnScreenOnly)
let windowListInfo = CGWindowListCopyWindowInfo(options, CGWindowID(0))
let infoList = windowListInfo as NSArray? as? [[String: AnyObject]]