我有一个简单的Swift应用程序,它需要能够控制击键并将其发送到Mail.app。在纯AppleScript中,我会做类似的事情:
tell application "Mail"
activate
tell application "System Events" to keystroke "2" using command down
我已经阅读了Apple的Scripting Bridge Programming Guide和Communicating with Apps using AppleScript and Swift,因此可以在Swift中做到这一点:
if let application = SBApplication(bundleIdentifier: "com.apple.Mail") {
let mailApplication = application as MailApplication
...
我不了解的是如何在Swift中复制AppleScript的tell application "System Events" to keystroke ...
功能。 “系统事件”不是SBApplication,因此我无法像Mail.app一样获得对它的引用。
答案 0 :(得分:0)
无需使用易碎易碎的GUI脚本来模拟击键。虽然从Mail的词典中并不能完全清楚(这很混乱),但是您可以使用AppleScript直接选择邮箱。
技巧是操纵最前面的selected messages
对象的message viewer
属性。
application
类定义了一些属性,这些属性包含对标准邮箱的引用(inbox
,outbox
,drafts mailbox
等)
tell application "Mail"
set selected mailboxes of message viewer 1 to drafts mailbox
end tell
或者您可以按名称引用自定义邮箱:
tell application "Mail"
set selected mailboxes of message viewer 1 to mailbox "Foo"
end tell
(要查找自定义邮箱的名称,请使用tell application "Mail" to get name of every mailbox
。)