gpt4 book ai didi

swift - 通过进程 ID 将 KeyEvent 发送到目标窗口

转载 作者:行者123 更新时间:2023-11-30 12:01:54 26 4
gpt4 key购买 nike

我需要创建一个关键事件(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

最佳答案

在您的情况下,您需要做的就是在 CGEvent 实例上调用 postToPid ,并将 PID 作为参数传递:

let cgEvent = customEvent!.cgEvent
cgEvent?.postToPid(168)

编辑
您的代码不起作用,因为您只是发送按键事件,而不是 CMD+R。您可以在 AppleScript 中轻松完成此操作。看这个问题:Mac: reloading document in Chrome or Firefox?

编辑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 进行测试。

关于swift - 通过进程 ID 将 KeyEvent 发送到目标窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47116132/

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