我没有在applescript中做太多编程,但我有一个个人应用程序,主要是python但生成简单的applescripts并通过系统调用调用它们。 Applescript与我通常编程的语言有很大不同,我无法弄清楚我是如何...
获取应用程序中文档的窗口顺序?
用于打电话,如:
set bounds of **first** window to %s
换句话说,如何获取应用程序的文档“窗口顺序”?
是否可以通过访问文档来与窗口进行交互,例如:
to get bounds of first window whose document is "%s"
(这不起作用)或者我必须先获取文档的窗口顺序,然后在第二行与该窗口(通过其顺序)进行交互?
任何见解都会很棒。感谢。
答案 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的外观(简洁明了)。