有没有办法获得任何给定窗口的永久标识符

时间:2011-06-03 20:53:35

标签: applescript

我正在尝试编写一个可以控制不同程序(设置位置和大小)的不同窗口的脚本。我有一些工作,但我有准确识别窗口的问题。现在我有:

tell application "System Events"
    tell application "Mail"
        set windowName to name of window 1
    end tell
end tell

这是我现在工作的一个非常简化的版本。我正在抓取许多不同应用程序的窗口信息,并将它们存储为稍后由另一个脚本调用的属性:

tell application "System Events"
    tell application "Mail"
        set position of window windowName to valueX
    end tell
end tell

只要窗口名称不变,这就可以工作。在许多其他应用程序中,我没有问题,因为窗口标题不会改变(iCal,iChat等)。在Mail中,窗口标题会根据电子邮箱中的电子邮件数量而变化。如果脚本的第一部分和最后一部分之间有电子邮件,那么脚本就会失败。

我无法通过它的索引号真正引用窗口,因为它们会随着窗口顺序的变化而变化(从前到后)。我想也许窗口ID可以工作,但是我需要我的脚本才能工作,即使应用程序已经退出并重新启动,如果应用程序重新启动,ID号也会改变。我是SOL,还是有什么我没想过的?

1 个答案:

答案 0 :(得分:0)

不是SOL,但你必须做更多的工作。只有几种类型的窗户。您有主浏览器窗口,并且您有电子邮件,无论是他们正在撰写的草稿还是他们正在阅读的电子邮件。也许你也关注偏好窗口。所以你必须存储窗口的类型。如果它是浏览器,那么您还必须存储当前选择的消息。如果它是一个电子邮件窗口,那么您也存储消息ID。对于浏览器,您只需打开一个新的浏览器窗口并恢复选择。对于电子邮件,您只需打开邮件即可。你必须检查Mail的字典中的其他类型的窗口,但想法是一样的。