2014-11-25 2 views
0

기술적으로 AppleScript로 대화 상자를 이동할 수 없다고 들었습니다. 놀랍게도 다음 코드가 작동합니다.AppleScript로 대화 상자 창을 이동하려면 어떻게해야합니까?

대화 상자를 만드는 InDesign 용 스크립트를 실행하고 있습니다. 새로운 애플 스크립트 편집기 창을 열고이 코드를 실행하는 대화 상자를 이동합니다 :

tell application "System Events" 
    tell application process "Adobe InDesign CS6" 
     set position of window 1 to {1000, 400} 
    end tell 
end tell 

문제는 : 나는 내 원래 스크립트에 직접 코드를 통합 할 수있는 방법을 알아낼 수 없습니다 - 그냥 아무튼 ' 내가 무엇을 시도해도 코드에 삽입 할 때도 작동하지 않습니다. AppleScript 편집기에서 실행해야합니다.

아이디어가 있으십니까?

답변

2

일반적으로 대화 상자는 호스트 응용 프로그램에서 차단됩니다. 시스템 이벤트에 창 이동을 지시 할 수는 있지만 Adobe InDesign 자체는 그 시점에서 차단 대화 상자를 불러 와서 바쁘기 때문에 자체 대화 상자를 이동할 수 없습니다.

영리 해지려면 올바른 시간에 프로세스를 포크하고 마술처럼 정확한 지연으로 대화 상자를 이동하십시오. 이것은 다음과 같습니다.

do shell script "osascript -e 'delay 4' -e " & (quoted form of "tell application \"System Events\" to tell application process \"Adobe InDesign CS6\" to set position of window 1 to {1000, 400}") & " > /dev/null 2>&1 &" 

필요에 따라 지연을 맞춤 설정하십시오. 이것은 당신이 알아 내야 할 마법의 가치가 될 것입니다. 필요에 따라 스크립트가 계속되기 전에 대화 상자가 사라 졌는지 테스트 할 수 있습니다.

끝에 비트, > /dev/null 2>&1 &는 배쉬는 stdout (쓰레기를) /dev/null에 리디렉션 알려주고 stdoutstderr은 다음 백그라운드에서 실행하는 모든 명령을 알려줍니다 리디렉션합니다. 이 전체 문장이 없으면이 명령문은 쉘 스크립트가 실행을 완료 할 때까지 AppleScript가 계속 실행되는 것을 차단합니다.

+0

Welp,이 효과가 있지만 지연을 0으로 설정하더라도 지연이 발생합니다. 이것은 아마도 얻을 것만 큼 좋을 것입니다. 감사! –

관련 문제