2017-02-18 2 views
0

여러 버전의 응용 프로그램을 게시했습니다. 유사한 이름을 가지고 있습니다 - Foo Basic, Foo Deluxe, Foo Retro 등 유사하지만 다른 번들 식별자도 있습니다. (내 아이디어가 아니 었어!) 일부 사용자는 이러한 앱을 두 개 이상 설치했지만 하나만 실행할 수 있습니다.AppleScript : 실행중인 응용 프로그램에 후보 이름 집합을 말하십시오.

모든 애플 리케이션은 동일한 AppleScript 사전을 지원합니다. 앱을 실행하기 위해 현재 실행중인 앱의 스크립트를 작성하려면 AppleScript가 필요합니다. 어떻게해야합니까?

답변

0

나는 그것을 작동시켰다. 몇 조각 필요 :

  • 실행중인 응용 프로그램의 이름을 가져옵니다. 이 작업은 processes (System Events) 또는 do shell script "ps …" (사용자 환경에 더 안정적이라고 생각되는 것)으로 수행 할 수 있습니다. 당신의 Mac에서 응용 프로그램의 하나에서 그런
  • , 사용하는 용어, 당신은
  • *이응용 프로그램 프로그램 응용 ... 말할 수는
  • 응용 프로그램로 스크립트를 저장 한 것을 제공 , 그래서 그것은 이미 컴파일됩니다.

다음은 몇 가지 코드입니다. 필자가 작업하고있는 스크립트는 아직 시스템 이벤트에 의존하지 않았기 때문에 새로운 사용자가 시스템 환경 설정으로의 고통을 덜어주기 위해 나는/bin/ps 대신에/bin/ps를 사용하기로했습니다 ...

set appName to runningAppWithBaseName("Foo") 
using terms from application "Foo Deluxe" -- an app on your Mac 
    tell application appName 
     (* whatever code you want here *) 
    end tell 
end using terms from 

on runningAppWithBaseName(baseName) 
    set command to "/bin/ps -eo args | grep " & baseName & " | grep -v grep" 
    (* The "grep -v grep" is to exclude the grep process itself from the results. *) 

    try 
     set fullPathOfRunningApp to do shell script command 
    end try 

    (* Here, given the fullPathOfRunningApp and your list of candidate app names, *) 
    (* insert code to determine the name of the running app. *) 
    return nameOfRunningApp 
end runningAppWithBaseName