无法使用AppleScript获取或设置某些应用程序的窗口大小?

时间:2012-08-18 18:55:48

标签: applescript

对于某些应用,例如Notes或VLC,可以使用以下内容:

tell application "Notes" to get the bounds of the window 1

如果我将上面的行放到一个文件中并使用sudo osascript thatfilename来调用它,它就可以了。

但是对于像“愤怒的小鸟太空”这样的应用程序,以下内容不起作用?

tell application "Angry Birds Space" to get the bounds of the window 1

给出错误:

execution error: Angry Birds Space got an error: Can’t get bounds of 
  window 1. (-1728)

那个应用程序有什么特别的东西阻止它吗? (因为它是游戏还是没有窗口1?)

我正在考虑获取和设置某个窗口的boundswidth(只是宽度,因为某些窗口似乎必须具有特定的宽高比,所以我认为将其设置为如果宽高比不正确,则特定的宽度和高度可能无效。

2 个答案:

答案 0 :(得分:11)

如果应用程序不可编写脚本,您将无法从中获取此类信息。如果你有系统偏好设置>设置“启用辅助设备访问”的“辅助功能”首选项,您可以使用系统事件流程套件来获取/设置窗口大小,例如:

tell application "System Events" to tell application process "Angry Birds Space"
    get size of window 1
end tell

注意:在macOS版本之间启用可访问性会有很大差异。 How to Enable Accessibility on Mac OS X 是一个很好的指南。从10.14开始,你必须去安全&amp;隐私&gt; <可访问性选项>隐私选项卡,并在“允许下面的应用程序控制您的计算机”中添加该应用程序。

答案 1 :(得分:4)

愤怒的小鸟太空可编写脚本吗?如果没有,告诉它做任何事都不应该奏效。类似的例子是:

tell application "Preview" to get the bounds of the window 1

正如Red Menace指出的那样,您可以像这样使用申请流程:

tell application "System Events" to tell application process "Preview"
    tell window 1
        set {size, position} to {{1280, 800}, {50, 50}}
    end tell
end tell