2009-08-24 4 views
0

표준 Cocoa 응용 프로그램을 작성 중이며 이제 AppleScript 지원을 구현하기 시작했습니다. 내 최상위 응용 프로그램 스크립팅 클래스에 대한 testprop 속성을 정의하고 구현했으며 잘 작동합니다. 응용 프로그램의 인스턴스를 실행하고 스크립트 편집기에서 다음 AppleScript를 실행하면 예상 한 결과를 얻을 수 있습니다. 내 애플를 실행하지 않을 때 나는 스크립트 편집기 이 매우 동일한 애플 스크립트를 실행하는 경우AppleScript가 "tell"명령을 사용하여 백그라운드에서 GUI 응용 프로그램의 비 GUI 인스턴스를 실행하는 이유는 무엇입니까?

tell application "MyApp" 
    testprop 
end tell 

그러나,이 속성에 대한 마지막으로 알려진 값을 반환하고, 후속 호출에 대한 반환하고 있습니다. 내 앱의 인스턴스가 GUI의 어느 곳에서나 시작되는 것을 볼 수 없습니다.

내가 알아 차린 후 쉘에서 "ps xawww | grep MyApp"을 실행했는데 내 응용 프로그램의 기본 실행 파일을 사용하여 다음과 같은 인수를 사용하여 프로세스가 생성되었다고 알려줍니다. -psn_0_323663 (끝에있는 번호는 매번 변경됩니다 이 프로세스가 시작되었습니다. AppleScript (다른 것들 중에서)가 프로세스를 추적하고 제어하는 ​​데 사용하는 프로세스 일련 번호입니다.

여기에 무슨 일이 일어나고 있습니까? 어떻게 이런 일이 일어나지 않도록 할 수 있습니까? 예를 들어, AppleScript가 명령을 실행하면 명령을 내릴 때 완전한 GUI 기반 인스턴스로 실행합니다.

편집 :

는 위의 내 노트북에서만 발생하는 것 같습니다. 내 맥 미니에 정확히 같은 일을하려고하면 (OS 버전 모두에서 동일 : 10.5.8) :

$ osascript -e "tell application \"MyApp\"" -e "testprop" -e "end tell" 
26:40: execution error: The variable testprop is not defined. (-2753) 

답변

2

나는 그것이 "비 실행 생각하지 않는다, 나는 단순히 오류 메시지가 -GUI "인스턴스에서는 앱을 숨 깁니다. 애플 스크립트에 "활성화"라는 행을 추가하여 앱이 활성화되도록 할 수 있습니다.이 경우 창과 메뉴가 표시됩니다.

+0

이것은 정확하게 일어난 일입니다. 내 독의 왼쪽에있는 앱 아이콘을 고정 시켰고 그 아이콘이 독의 오른쪽에 보이지 않기 때문에 일종의 "비 GUI"모드로 실행되고 있다고 잘못 생각했다. :) 또한, 다른 컴퓨터에서 작동하지 않는 이유는 이전에 "Debug"릴리스가 있었기 때문에 (AppleScript가 지원되지 않는) 거기에 연결하려고 시도했기 때문입니다. – hasseg

+0

예, 잘못된 버전의 앱을 선택하는 LaunchServices가 목표로하는 것은 정말 짜증이납니다. 앱의 다른 모든 빌드를 제거하거나 개발 중에 번들 ID를 변경하여 LS가 다른 빌드를 볼 수 없도록하십시오. –

관련 문제