Мы используем AppleScript для отображения файлов из нашего приложения в Finder. Если у пользователя есть альтернативы, например, PathFinder, установленный в качестве замены для Finder, как мы можем найти наше приложение для передачи команд AppleScript?

2 ответа2

2

Вы можете попробовать использовать это:

try
    tell application "Path Finder" to reveal "/Users/danielbeck/Downloads"
on error
    tell application "Finder" to reveal folder "Downloads" of home
end try

Но это предполагает, что пользователь с Path Finder предпочитает его для раскрытия функциональности.


С другой стороны,

do shell script "open 'file:///Users/danielbeck/Downloads'"

Когда пользователь настроил Path Finder для обработки URL-адресов file:// , откроется папка в Path Finder. Работает только с папками, хотя.


Вы можете использовать следующее, чтобы получить список процессов:

tell application "System Events"
    processes
end tell

Ищите процесс с именем Finder. Если не найдено, у пользователя нет запущенного Finder. Или найдите один с именем Path Finder, и, если он найден, используйте его вместо. И т.п.

0

Хотя @Daniel Beck предоставил хороший ответ выше, вот обработчик, который я использую, чтобы показать в Finder элемент, выбранный в данный момент в Path Finder. Часто мне нужно что-то сделать в окне Finder, поэтому я добавил паузу, пока имя окна Finder не совпадет с именем окна Path Finder.

Для дальнейшего использования я поддерживаю этот фрагмент в моем GistHub по адресу:revePFItemInFinder.applescript

```applescript
--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
on revealPFItemInFinder()
  --–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
  (*  VER: 2.0    2018-03-15
    PURPOSE:  Reveal Item in Finder that is Selected in Path Finder

    RETURNS:  alias of item selected in both Finder and Path Finder

    AUTHOR:  JMichaelTX
  --–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
  *)

  --- GET THE ITEM SELECTED IN PATH FINDER ---

  tell application "Path Finder"
    set fileList to (get selection)
    if ((fileList is missing value) or ((count of fileList) ≠ 1)) then error ("You must select only ONE file in Path Finder.")
    set pfWinName to name of window 1
    set itemPath to POSIX path of item 1 of fileList
  end tell

  set itemAlias to alias POSIX file itemPath

  --- REVEAL SAME ITEM IN FINDER ---

  tell application "Finder"
    activate -- to make sure reveal will be in frontmost window
    reveal itemAlias

    --- Now Wait for New Finder Window with Same Name as Path Finder ---

    set finWinName to name of window 1

    set maxWaitTime to 2.0
    set delayTime to 0.1
    set waitTime to 0

    repeat while finWinName ≠ pfWinName
      delay delayTime
      set finWinName to name of window 1
      set waitTime to waitTime + delayTime
      if (waitTime > maxWaitTime) then error "Max wait time of " & maxWaitTime & " exceeded waiting for Finder Window of " & pfWinName
    end repeat

  end tell

  return itemAlias

end revealPFItemInFinder

```

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .