osx : 다른 프로그램이 열릴 때 프로그램을 시작합니다


1

다른 프로그램이 시작될 때 프로그램을 시작하는 방법을 원합니다. 특히, 나는 MS Word 문서를 열고 인용 관리자를 동시에 열도록하고 싶습니다 (EndNote는 MS Word 환경 설정 내에서이 기능을 지원하지만 최근에 인용 관리자를 전환했습니다).

드라이브에서 기존 Word 문서를 열고 두 번째 프로그램을 트리거하고 싶습니다. 동일한 질문 이 최근에 Windows 7 환경에 대해 답변되었습니다.


이것은 좋은 질문입니다. 다른 프로그램이 닫힐 때 한 프로그램을 닫는 방법도 알고 싶습니다. 이 같은 방법으로 할 수 있습니까?
Mike Kormendy

답변:


2

이와 같은 속성 목록을 저장 ~/Libary/LaunchAgents/test.plist하고로로드 해보 십시오 launchctl load ~/Libary/LaunchAgents/test.plist.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>test</string>
    <key>ProgramArguments</key>
    <array>
    <string>osascript</string>
    <string>-e</string>
    <string>tell application "System Events"
    set p to name of processes
    if p contains "TextEdit" and p does not contain "Mail"
    do shell script "open -gja Mail"
    end
    end</string>
    </array>
    <key>StartInterval</key>
    <integer>10</integer>
</dict>
</plist>

open -j( --hide)가 10.8에 추가되었습니다. open -jg응용 프로그램이 실행 중이지만 열린 창이없는 경우 새 보이는 창이 열립니다.

StartInterval이 9 초 이하이면 프로그램이 조절됩니다.

com.apple.launchd.peruser.501[128]: (test) Throttling respawn: Will start in 7 seconds

다른 방법이 같은 방법으로 닫힐 때 두 응용 프로그램을 닫을 수 있습니까?
Mike Kormendy

0

코드 주셔서 감사합니다. 원래 감시 프로세스가 더 이상 실행되지 않는 경우 시작된 프로세스를 닫기 위해 약간 확장했습니다. 내 코드는 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>TextEditWatcher</string>
    <key>ProgramArguments</key>
    <array>
    <string>osascript</string>
    <string>-e</string>
    <string>tell application "System Events"
        set p to name of processes
        if p contains "TextEdit" and p does not contain "Mail" then
            do shell script "open -gja Mail"
        end if
        if p does not contain "TextEdit" and p contains "Mail" then
            tell application "Mail" to quit
        end if
        end tell</string>
    </array>
    <key>StartInterval</key>
    <integer>30</integer>
</dict>
</plist>

내 시스템 (10.9.4)에서 StartInterval 10은 이미 너무 많았고 타이밍이 중요하지 않기 때문에 30 초를 선택했습니다. 그러나 15 나 20도 괜찮습니다. Lri의 답변에 언급 된대로 설치 및 테스트

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.