swift - Cocoa:在 CGEvent 中模拟 Command+Tab

标签 swift macos cocoa cgeventtap

我想在我的应用程序中模拟 Application Switcher,我认为 CGEvent 也许可以做到这一点。

好了,在学习了一些关于CGEvent的基本信息之后,我可以模拟按键按下Command + Tab。但是 Application Switcher 窗口只是闪烁并立即切换到另一个应用程序。

我意识到我需要按住 Command 键并按Tab 键来选择应用程序。所以,这是我的代码:

// Hold the Command key
let source = CGEventSourceCreate(.HIDSystemState)
let event = CGEventCreateKeyboardEvent(source, 55 as CGKeyCode, true)
CGEventSetIntegerValueField(event, .KeyboardEventAutorepeat, 1)
CGEventPost(.CGHIDEventTap, event)

// Press Tab key once
let source = CGEventSourceCreate(.HIDSystemState)
let keyDown = CGEventCreateKeyboardEvent(source, 48 as CGKeyCode, true)
CGEventSetFlags(keyDown, .MaskCommand)
CGEventPost(.CGHIDEventTap, keyDown)
let keyUp = CGEventCreateKeyboardEvent(source, 48 as CGKeyCode, false)
CGEventPost(.CGHIDEventTap, keyUp)

但是没用!有任何想法吗?谢谢!

最佳答案

keyup 事件中缺少命令标志。在 CGEventPost(.CGHIDEventTap, keyUp) 之前添加 CGEventSetFlags(keyUp, .MaskCommand)

关于swift - Cocoa:在 CGEvent 中模拟 Command+Tab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36375080/

相关文章:

iphone - 为什么 UIWebView 不释放其所有内存?

objective-c - 不同的实例化方法

swift - 带有 cachePolicy ReloadIgnoringCacheData 的 NSURLRequest 返回陈旧数据

xcode - 存储/关联 NSMenuItems 以及文件夹 URL

swift - NSTableView socket 在代码中子类化为 NSOutlineView?

mysql - 在 Mac 上并行使用 Postgre 和 MySQL

cocoa - NSPopover 未出现

ios - 我在将 uiview 当前位置设置为 uiview 默认位置时遇到问题?

ios - 如何访问自定义单元格文本字段值 Swift 3.0

ios - 为什么 SwiftUI 中的文本编辑器会忽略我的 .keyboard 类型?