Elencando tutti i documenti aperti su tutte le app visibili visibili in AppleScript

2

Mi sono imbattuto in qualcosa del tipo:

Codice :

tell application "Preview"
    set p to {}
    set p to documents
end tell

Output :

{document "1st.pdf" of application "Preview", document "2nd.pdf" of application "Preview"}

Ma questo è molto specifico per le app, facendo questo su MS Word, ad esempio, hai percorso dei percorsi e alcune app come CodeRunner non capiscono affatto la parola chiave documents .

Dati questi documenti aperti:

Current open documents from all open visible apps
+– Microsoft Word.app
|  +– 1.docx
|  +– 2.docx
+– CodeRunner.app
|  +– 1.sh
|  +– 2.py
|  +– 3.pl
+– Preview.app
   +– 1.pdf
   +– 2.png
.
.
.

Voglio un risultato di qualcosa del genere:

{"~/Documents/1.docx", "~/Downloads/2.docx", "~/Dropbox/folder/1.sh", "~/Dropbox/others/2.py", "~/Downloads/folder/folder/3.pl", "~/Documents/special/1.pdf", "~/Dropbox/special/2.png", ...}

Come è possibile elencare tutti i documenti aperti in tutte le app aperte?

    
posta Anonymous 08.07.2016 - 13:26
fonte

1 risposta

2

Ho provato a farlo da solo. Ho concluso che non esiste un modo standard e garantito per ottenere i documenti aperti di un'applicazione in esecuzione.

Quello che hai provato è il metodo migliore. Per le app che utilizzano l'architettura del documento Cocoa (la maggior parte), esiste il supporto automatico AppleScript per ottenere tutti gli oggetti NSDocument aperti e l'interrogazione di determinate proprietà di tali oggetti. Di seguito è riportata la mappatura tra le proprietà AppleScript e le proprietà Objective-C.

Proprietà AppleScript = > Getter Objective-C:

  • path = > %codice%
  • fileName = > %codice%
  • modified = > %codice%

Quello che vuoi è la proprietà isDocumentEdited . Mi piace name .

Sfortunatamente, questo supporto AppleScript automatico è disponibile solo per le app che utilizzano l'architettura del documento Cocoa e con AppleScript abilitato (tramite la chiave lastComponentOfFileName Info.plist). Pertanto, questo metodo non funzionerà su alcune app. Ad esempio, CodeRunner non ha AppleScript abilitato. E TextMate non usa l'architettura del documento Cocoa.

    
risposta data 12.07.2016 - 01:21
fonte

Leggi altre domande sui tag