按文档文件名访问窗口

时间:2010-11-21 02:31:15

标签: applescript

我没有在applescript中做太多编程,但我有一个个人应用程序,主要是python但生成简单的applescripts并通过系统调用调用它们。 Applescript与我通常编程的语言有很大不同,我无法弄清楚我是如何...

获取应用程序中文档的窗口顺序?

用于打电话,如

set bounds of **first** window to %s

换句话说,如何获取应用程序的文档“窗口顺序”?

是否可以通过访问文档来与窗口进行交互,例如

to get bounds of first window whose document is "%s"

(这不起作用)或者我必须先获取文档的窗口顺序,然后在第二行与该窗口(通过其顺序)进行交互?

任何见解都会很棒。感谢。

1 个答案:

答案 0 :(得分:2)

你可以做好这两件事。第一行只是set bounds of window 1 to ...,或者,如果您愿意,set bounds of the first window to ...第二行取决于您想要做什么。如果您想要访问 name 特别适用的第一个窗口,您可以get the bounds of window "NAME";但是,如果您真的想要文档的名称,则需要执行类似

的操作
set d to the document "NAME"
repeat with w in windows
  if w's document is d then return bounds of w
end repeat

你应该可以the first window whose document is d,但这会失败;据我所知,这是因为document也是一个类型名称。此外,如果window "NAME" / document "NAME"失败 - 这是我记得有时不工作的事情,即使它应该 - 你可以改为使用the first window whose name is "NAME"(或the first document ...) 。但简单的形式几乎肯定会奏效。

另外,如果您只是生成这些AppleScripts,调用它们并删除它们 - 换句话说,如果您假装它们是Python函数,而不是生成它们供以后使用 - 我强烈建议您使用它appscript而是。我从来没有在Python中使用过,但我在Ruby中使用它,这是一个非常好的方式来处理AppleScript在使用你选择的语言时所做的一切。例如,我认为您的第一个示例将变为app('Whatever').windows[1].bounds.set((0,0,0,0)),(或...windows.first....,如果您愿意),而您的第二个示例将成为app('Whatever').windows['NAME'].bounds.get()app('Whatever').windows[its.document.name == 'NAME'].get(),具体取决于您是否需要窗口的名称或窗口的文档名称。这都是未经测试的,但肯定会捕捉到appscript的外观(简洁明了)。