Как активировать приложение Mac OS X данным идентификатором процесса?

Я знаю идентификатор процесса приложения в Mac OS X. Как я могу переключиться на него (использующий applescript, или Python, или безотносительно)?

"Переключателем", я имею в виду, вставляю фокус.

Обычное решение состоит в том, чтобы использовать applescript код tell application "Foo" activate, но здесь имя не полезно, потому что у меня есть много экземпляров того же выполнения приложения. Я однако в состоянии получить идентификатор процесса приложения.

Как я могу переключиться на это приложение программно?

17
задан Olivier Verdier 19 February 2010 в 14:04
поделиться

2 ответа

Если вы не хотите / не можете устанавливать дополнительное программное обеспечение, есть встроенный способ поиска идентификаторов процессов и приложений: ps.

ps - полезный инструмент командной строки для поиска информации о запущенных процессах. Чтобы найти конкретное приложение по номеру процесса (который я присвоил переменной myProcessId):

do shell script "ps -p " & myProcessId

, это вернет результат, подобный этому

  PID TTY           TIME CMD
66766 ??         9:17.66 /Applications/Firefox.app/Contents/MacOS/firefox-bin -psn_0_3793822

, чтобы ограничить результат только соответствующей строкой, перенаправьте его в grep, например

do shell script "ps -p " & myProcessId & "|grep " & myProcessId

Анализируя ответ, вы можете найти название приложения. Это может быть немного сложно, потому что в результате будет отображаться фактическая команда, используемая для приложения, а не имя приложения (если вы посмотрите на пример, вы увидите, что его можно найти, выполнив поиск something.app в результате) .

Edit - извините, я неправильно понял вопрос.

Вы можете сделать это с помощью системных событий (в любом случае это оказывается намного проще, чем возиться с оболочкой):

tell application "System Events"
    set theprocs to every process whose unix id is myProcessId
    repeat with proc in theprocs
        set the frontmost of proc to true
    end repeat
end tell
9
ответ дан 30 November 2019 в 14:00
поделиться

Вот мое решение с python и applescript:

  1. Установить appscript
  2. Запустить appscript.app (pid = < yourpid>). activate ()

Вот и все!

2
ответ дан 30 November 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: