Как мне получить путь к файлу открытого окна приложения? - PullRequest
0 голосов
/ 25 сентября 2019

Я хочу написать AppleScript, который создает новый файл в том же каталоге, что и файл, который у меня есть в данный момент (в данном случае в приложении TexShop).

Если я могу получить путь, то я могу написать скрипт вроде:

set thePath to get path to open window / tell TexShop to get path...?

set response to display dialog "Some text:" default answer ""

set toWrite to text returned of response

tell application "Finder" to set newFile to make new file at thePath

set openFile to open for access file (newFile as string) with write permission

write toWrite to openFile starting at eof

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

Ответы [ 2 ]

0 голосов
/ 28 сентября 2019

Вот метод, который должен охватывать как сценариев, так и не сценариев приложений, с оговоркой, что он, очевидно, не может возвращать информацию, которая не предоставляется разработчиком через ловушки доступности.Однако, если это сценарий или если разработчик решит предоставить данные приложения для доступности, это обеспечит эту небольшую дополнительную область за пределами сокращающегося круга программного обеспечения 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.

0 голосов
/ 26 сентября 2019

Этот следующий код AppleScript должен помочь в достижении цели получения пути к самому переднему документу в самом переднем приложении и пути к его содержащей папке.

(* The Delay Command  Gives You Time To Bring The Desired App To The Front
Mainly For Use While Testing This Code In Script Editor.app *)

delay 5 -- Can Be Removed If Not Needed

tell application (path to frontmost application as text) to ¬
    set documentPath to (get path of document 1) as POSIX file as alias

tell application "Finder" to set containingFolder to container ¬
    of documentPath as alias
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...