0

我正在尝试编写一个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

我确信有更好的方法可以做到这一点,但意图如下:

  • 使用 CMD+Up 回家
  • 创建两个空行
  • 再回家
  • 插入文本

我的问题是在执行击键之前插入了文本。烦人。任何人都可以帮忙吗?

4

2 回答 2

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 首先列出了最前面的窗口。这就是我现在想要的。

于 2015-01-30T15:56:13.250 回答
0

击键和其他 gui 任务被输入到最前面的应用程序。因此,您应该始终在执行这些操作之前激活您想要定位的应用程序。因此,我建议您将以下内容放在系统事件代码之前。即使您认为应用程序是最前面的,您也应该这样做以确保确定。

tell application "Microsoft Outlook" to activate
delay 0.2

此外,正如其他评论中所建议的,您需要在每行 gui 代码之间有短暂的延迟,以确保计算机有时间物理执行代码。

所以使用延迟并激活应用程序。那应该对你有帮助。

于 2015-01-29T15:21:05.660 回答