我正在尝试编写一个AppleScript,它会在消息的开头插入一些预定义的文本。这就是我目前所拥有的:
set msgClass to (choose from list {"Green", "Blue", "Purple"} with title "Choose:")
if result is false then
stop
else
set msgClasstxt to the result
set msgClasstxt to "Classification: " & msgClasstxt
tell application "System Events"
key code 126 using {command down}
keystroke return
keystroke return
key code 126 using {command down}
end tell
tell application "Microsoft Outlook" to set selection to msgClasstxt
end if
我确信有更好的方法可以做到这一点,但意图如下:
我的问题是在执行击键之前插入了文本。让人伤脑筋。有人可以帮忙吗?
答案 0 :(得分:0)
击键和其他gui任务输入到最前面的应用程序。因此,您应该在执行这些操作之前始终激活您想要定位的应用程序。因此,我建议您在系统事件代码之前放置以下内容。即使你认为应用程序是最重要的,你也应该这样做才能确定。
tell application "Microsoft Outlook" to activate
delay 0.2
此外,正如其他评论中所建议的那样,您需要在每行gui代码之间短暂延迟,以确保计算机有时间物理执行代码。
因此请使用延迟并激活应用程序。这应该对你有帮助。
答案 1 :(得分:0)
所以,这就是我所做的: - 增加了一项规定,以确保我处理当前活动的消息窗口 - 激活那个窗口 - 通过系统事件完成所有操作
tell application "Microsoft Outlook" to get the id of the first window
set currentWindow to the result
set msgClass to (choose from list {"Green", "Blue", "Purple"} with title "Choose:")
if the result is false then
stop
else
set msgClasstxt to "Classification: " & the result
tell application "Microsoft Outlook"
activate window currentWindow
tell application "System Events"
key code 126 using {command down}
keystroke return
keystroke return
key code 126 using {command down}
keystroke msgClasstxt
end tell
end tell
end if
第一行有效,因为Outlook首先列出了最前面的窗口。这就是我现在想要的。