답변

4

스크립트가 작동하지 않습니다. 응용 프로그램에 뭔가를하도록 지시하면 나머지 코드가 수행되기 전에 응용 프로그램이 응용 프로그램을 기다립니다. 따라서 스크립트는 Finder가 시스템 이벤트 코드로 이동하기 전에 작업을 완료하기를 기다리고 있습니다. 따라서 본질적으로 스크립트에서 시스템 이벤트 명령은 대화 상자가 닫히기 전까지는 실행되지 않습니다. 따라서이 방법으로는 대화를 무시할 수 없습니다. AppleScript로는 단일 스레드이기 때문에

그러나 ...

ignoring application responses 
    tell application "Finder" 
     activate 
     display dialog "blah" 
    end tell 
end ignoring 

delay 0.5 
tell application "System Events" to keystroke return 

을이 같은 응용 프로그램의 응답을 기다리는하지 AppleScript로 말할 수있는 또 다른 방법은 두 개의 별도의 프로세스를 사용하는 것입니다. 하나는 대화 상자를 표시하고 다른 하나는 대화 상자를 닫습니다. 당신은 2 개의 다른 applescripts, 각 작업마다 하나씩 그것을 할 수 있습니다. 또 다른 방법은 셸을 사용하여 하나의 프로세스를 만든 다음 해당 프로세스를 백그라운드로 보내므로 AppleScript는 셸이 완료 될 때까지 기다리지 않고 대화 상자를 닫습니다. 방법은 당신이 그렇게 할 수있는 방법입니다.

do shell script "osascript -e 'tell application \"Finder\"' -e 'activate' -e 'display dialog \"blah\"' -e 'end tell' > /dev/null 2>&1 &" 
delay 0.5 
tell application "System Events" to keystroke return 

이렇게 여러 가지 방법이 있습니다. 행운을 빕니다.

3

"display dialog"명령에는 giving up after [number] 매개 변수가 포함되어있어 [number] 초 후에 자동으로 대화 상자를 닫습니다. 빠른 예 :

tell application "Finder" to display dialog "Quick, press a button!" buttons{"1","2","3"} default button 1 giving up after 5 

이 코드는 세 개의 버튼이 포함 된 대화 상자를 생성합니다. 지정된 시간 (이 경우 5 초) 내에 작업을 수행하는 동안 해당 작업을 클릭 할 수 있습니다.

{button returned:"1", gave up:true} 

내가 희망이 도움이 : 이렇게하지 않으면, 명령에 의해 반환 된 "대화 응답"레코드는 다음과 같이 될 것입니다! :)