Вот метод, который должен охватывать как сценариев, так и не сценариев приложений, с оговоркой, что он, очевидно, не может возвращать информацию, которая не предоставляется разработчиком через ловушки доступности.Однако, если это сценарий или если разработчик решит предоставить данные приложения для доступности, это обеспечит эту небольшую дополнительную область за пределами сокращающегося круга программного обеспечения AppleScriptable:
tell application id "com.apple.systemevents" to tell (the first process ¬
where it is frontmost) to tell (a reference to the front window) ¬
to if it exists then tell its attribute "AXDocument"'s value to ¬
if it is not in [missing value, "file:///Irrelevent"] then ¬
return my (POSIXPathOfFolder for it)
false
on POSIXPathOfFolder for (fileURL as text)
local fileURL
set fp to "/tmp/rw" as «class furl»
close access (open for access fp)
set eof of fp to 0
write the fileURL to fp
read fp as «class furl»
POSIX path of (result & "::" as text)
end POSIXPathOfFolder
Я также избегаю использования Finder
всякий раз, когда это возможно, так как он медленный, глючный и темпераментный.В обработчике внизу используются стандартные дополнения и встроенные функции для получения папки, содержащей путь к найденному документу.
Если путь к документу недоступен, скрипт возвращает false
.