0

我有 2 个我写的空中应用程序。他们在 10 秒后自动全屏显示。在此之前,需要将它们发送到适当的显示器。“app_1”需要在显示器 1 上运行,“app_2”需要在显示器 2 上运行。

本质上,我有这个代码:

do shell script "cd /Applications/app_1.app/Contents/MacOS/ ; open app_1;"

这对我来说完美无缺。这两个应用程序都是以这种方式启动的,并且有一些代码可以确保这些应用程序尚未打开,并在它们打开时关闭它们。

我尝试在启动后添加脚本来定位应用程序:

do shell script "cd /Applications/app_1.app/Contents/MacOS/ ; open app_1;"
tell first window of application "app_1" to set bounds to {0,0,1920,1080}

这给了我一个错误:

app_1 got an error: Can't set bounds of window 1 to {0,0,1920,1080}  

我尝试在启动之前添加几秒钟的延迟set bounds,以防应用程序在启动时尚未启动set bounds,但这并没有改变任何东西。

我还尝试将边界设置为{100,100,200,200}仅查看屏幕坐标是否错误之类的东西,但仍然是完全相同的错误,只是使用了{100,100,200,200}1920x1080 坐标而不是原始的 1920x1080 坐标。

有人对此有任何见解吗?几个小时以来,我一直在尝试在谷歌上找到解决方案。

4

1 回答 1

1

听起来您的应用程序没有公开标准的“窗口”类。我不知道 AIR 应用程序是否应该自动处理这个问题并且它不起作用——如果是这样,你会想要调试它。

但另一种选择是使用 UI 脚本在外部控制其窗口。而不是这个:

tell first window of application "app_1" to set bounds to {0,0,1920,1080}

做这个:

tell application "System Events"
  set position of first window of application process "app_1" to {0, 0}
  set size of first window of application process "app_1" to {1920,1080}
end tell

但是,这只有在您进入“系统偏好设置”的“通用访问”面板并选中“启用辅助设备访问”(或通过 API、“sudo touch /var/db/.AccessibilityAPIEnabled”等)完成时才有效。 )。

于 2012-05-16T02:25:07.893 回答