我需要创建一个关键事件(cmd + r 用于刷新浏览器窗口)并传递我尝试定位的窗口的进程 ID。比方说
let customEvent = NSEvent.keyEvent(with: NSEvent.EventType.keyUp,
location: NSPoint(),
modifierFlags: NSEvent.ModifierFlags.command,
timestamp: TimeInterval(),
windowNumber: 0,
context: NSGraphicsContext(),
characters: "",
charactersIgnoringModifiers: "",
isARepeat: false,
keyCode: 0x0F);
let cgEvent = customEvent!.cgEvent
cgEvent!.postToPid(688) // I want to post to a process with pid 688
在你的情况下,你需要做的就是打电话后ToPid在你的CGEvent实例,并将 PID 作为参数传递:
let cgEvent = customEvent!.cgEvent
cgEvent?.postToPid(168)
Edit
您的代码不起作用,因为您只是发送按键事件,而不是 CMD+R。您可以在 AppleScript 中轻松完成此操作。看这个问题:Mac:在 Chrome 或 Firefox 中重新加载文档? https://stackoverflow.com/questions/2091235/mac-reloading-document-in-chrome-or-firefox
Edit 2
如果没有 AppleScript,我会这样做:
let src = CGEventSource(stateID: .hidSystemState)
if let event = CGEvent(keyboardEventSource: src, virtualKey: 0x0f, keyDown: true)
{
event.flags = .maskCommand
event.postToPid(your_browser_pid)
}
使用 Safari 测试成功。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)