2012-05-16 4 views
0

필자가 작성한 2 개의 애플리케이션이 있습니다. 10 초 후에 자동으로 전체 화면이 나타납니다. 그 전에는 적절한 디스플레이에 보내야합니다. 완벽하게 나를 위해 작동듀얼 모니터에 applescript가있는 윈도우 배치

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

: "APP_1는"디스플레이 1에 실행해야합니다, "APP_2는"나는이 코드를 가지고, 본질적으로 표시 2.

에서 실행해야합니다. 두 앱 모두 그런 식으로 출시되며 앱이 아직 열리지 않았는지 확인하고 해당 앱이있는 경우 닫을 수있는 코드가 있습니다. 이 시작된 후 바로

나는 응용 프로그램을 배치하는 스크립트를 추가하려고 :

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}과 같은 경계를 설정해 보았습니다. 화면 좌표가 잘못되었거나 오류가있는지도 확인했지만 원래 1920x1080 좌표 대신 {100,100,200,200}과 동일한 오류 만있었습니다.

누구든지이 사실에 대해 통찰력을 갖고 있습니까? 나는 2 시간 동안 Google에 해결책을 찾아내는 것을 지금 시도하고있다.

+0

이것은 어리석은 질문 일 수 있지만 앱이 실제로 "첫 번째 창"에 응답하고 창이 실제로 "경계 설정"에 응답합니까? 즉, 앱이 이미 실행 중일 때 수동으로 동일한 "tell"행을 실행하면 작동합니까? – abarnert

+0

응용 프로그램이 이미 실행 중일 때 수동으로 수행 할 때도 여전히 동일한 오류 메시지가 표시됩니다. – BumbleShrimp

+0

OK, 다음 두 부분으로 나눕니다. 응용 프로그램 "app_1"에 첫 번째 창으로 알려주면 어떨까요? 그것도 실패합니까? 그렇다면 앱이 창을 스크립팅에 노출시키지 않습니다. (예를 들어, 코드를 작성했거나 AIR 주장이 자동으로 발생하기 때문에) 정상적으로 작동한다고 생각되면 수정해야합니다. 작동을 기대할 필요가없는 경우 UI 스크립팅 (즉, 보조 액세스를 사용하도록 설정해야 함)을 사용해야합니다. – abarnert

답변

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"등을 통해 동일하게 수행됩니다.

+0

나는 당신이 제안한 것을했습니다. 이제 ""System Event "클래스의 pcap"app_1 "을 {0, 0}으로 설정할 수 없습니다. – BumbleShrimp

관련 문제