我写了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坐标。
有人对此有任何见解吗?我一直试图在谷歌上找到解决方案几个小时。
答案 0 :(得分:1)
听起来你的应用程序没有暴露标准的“窗口”类。我不知道AIR应用程序是否应该自动处理它并且它不起作用 - 如果是这样,你将需要调试它。
但另一种方法是使用UI Scripting从外部控制其窗口。而不是:
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
但是,只有在您进入系统偏好设置的Universal Access面板并选中“启用辅助设备访问权限”(或通过API完成相同操作,“sudo touch /var/db/.AccessibilityAPIEnabled”)时,此功能才有效。等等。)。