Listado de todos los documentos abiertos en todas las aplicaciones abiertas abiertas en AppleScript

2

Me he encontrado haciendo algo como:

Código :

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

Salida :

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

Pero esto es muy específico de la aplicación; al hacer esto en MS Word, por ejemplo, se obtuvieron rutas de acceso y algunas aplicaciones como CodeRunner no entienden la palabra clave documents en absoluto.

Teniendo en cuenta estos documentos abiertos:

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
.
.
.

Quiero una salida de algo como esto:

{"~/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", ...}

¿Cómo es posible enumerar todos los documentos abiertos en todas las aplicaciones abiertas?

    
pregunta Anonymous 08.07.2016 - 13:26

1 respuesta

2

He estado tratando de hacer esto yo mismo. Llegué a la conclusión de que no existe una forma estándar y garantizada de obtener los documentos abiertos de una aplicación en ejecución.

Lo que probaste es el mejor método. Para las aplicaciones que utilizan la arquitectura de documentos Cocoa (la mayoría), existe compatibilidad automática con AppleScript para obtener todos los objetos abiertos NSDocument y consultar ciertas propiedades de esos objetos. La asignación entre las propiedades de AppleScript y las propiedades de Objective-C se muestra a continuación.

propiedad de AppleScript = > Objective-C getter:

  • path = > %código%
  • fileName = > %código%
  • modified = > %código%

Lo que quieres es la propiedad isDocumentEdited . Me gusta name .

Lamentablemente, este soporte automático de AppleScript solo está disponible para aplicaciones que utilizan la arquitectura de documento Cocoa y tienen AppleScript habilitado (a través de la tecla lastComponentOfFileName Info.plist). Por lo tanto, este método no funcionará en algunas aplicaciones. Por ejemplo, CodeRunner no tiene AppleScript habilitado. Y TextMate no utiliza la arquitectura de documentos Cocoa.

    
respondido por el fumoboy007 12.07.2016 - 01:21

Lea otras preguntas en las etiquetas