Abrir una nota o mostrar un cuadro de diálogo con la aplicación

Trabajo con un colega editando videos y deseo activar un cuadro de diálogo o un documento de notas cada vez que abre Final Cut, para poder dejarle mensajes para que haga el trabajo. La máquina tiene que permanecer siempre encendida, por lo que no puedo usar ningún método de inicio.

Es la misma estación de trabajo misma cuenta de usuario, compartimos la sala en diferentes turnos.

El Capitan 10.11.6 - FinalCut Pro 7 -- Entra después de las 18h

¿Algún consejo sobre cómo mostrar un mensaje al abrir una aplicación?

¿Dónde está, cómo está conectado, qué HW, SW está usando? Ayúdanos a ayudarte. Si es la misma máquina, ¿tiene su propia cuenta de usuario?
Es la misma estación de trabajo, compartimos la habitación en diferentes turnos.
por favor responda todas mis preguntas, especial si tiene su propia cuenta de usuario. ¿Cómo sabría el sistema que fue él quien abrió el Final Cut y no tú? Podríamos usar la marca de tiempo si eso no cambia. Siempre la misma mierda.
Sí, misma cuenta. Es la misma computadora, solo me voy temprano y él asume más tarde.
El Capitan 10.11.6 - FinalCut Pro 7 -- Entra después de las 18h
Está bien si se me muestra la nota.
¿Puedo sugerirle que deje una nota abierta en el escritorio justo antes de irse para que esté allí cuando él llegue? Las soluciones más sencillas suelen ser las más eficaces.
CJK Estoy de acuerdo, es una buena idea. Sin embargo, a veces hay cortes de energía y otras personas usan la máquina, por lo que sería bueno tener un método confiable...
Gracias por la aportación. El problema es tener un mensaje de entrada programable (imputado por usted que cambia) de lo contrario, siempre es el mismo mensaje.
@Buscar웃 Quizás el script podría recuperar el mensaje de un archivo NOTES.txt. O puedo editar un servicio/aplicación usando el Editor de secuencias de comandos. Mi verdadero problema es activar el mensaje. Estoy pensando en dejar abierto un "diálogo de visualización".
Si quiere ser elegante, puede configurar un servidor web con Apache y PHP (ambos preinstalados). Use github.com/henck/rtf-html-php para analizar el documento RTF como HTML. Aloja el archivo de notas allí. Su colega puede abrir el sitio web para ver el mensaje.
Si quieres ser ULTRA fancé (lo sé), puedes configurar un chat para que puedas enviar mensajes de ida y vuelta. Pero entonces, ¿por qué no usar simplemente un programa de mensajería instantánea? O correo electrónico.
@JBis Gracias por tus ideas. Pensé que había algo fácil, como un script para realizar un seguimiento de las aplicaciones abiertas o algo así. Solo quiero algo genial para meterme con él o alertar por algo. Por supuesto, ya usamos Slack y correos electrónicos.
@MateusRibeiro Podría armar un guión, pero no se podría. Le sugiero encarecidamente que se quede con Slack y los correos electrónicos.

Respuestas (2)

Aquí hay un script de Apple (en su editor de scripts de la carpeta Utility) que abrirá Notes si se abre Final Cut.

No tengo Final Cut, así que usé Skype para probar. Simplemente copie y pegue lo siguiente, luego guarde.

repeat until application "Final Cut Pro" is running
    delay 1
end repeat

delay 5
if application "Final Cut Pro" is running then activate application "Notes"

El Delay 5 (segundos) es para tener Notes como ventana superior después de que comience Final Cut. Puede aumentar ese número. Este script se ejecutará de forma continua hasta que se inicie Final Cut, pero podríamos hacer que comience a las 18:00.

El requisito previo es que abandone el corte final antes de irse.

Como siempre puedes ser muy elaborado dejando un mensaje e instrucciones en Nota.

También configure Notas en Preferencia para ordenar por fecha de creación para tener la última nota en la parte superior.

"AppleScript" no está en la carpeta "Utilidad". Sin embargo, Script Editor se encuentra en la carpeta "Utilidades" de la carpeta "Aplicaciones". Probar la aplicación con Skype es razonable, pero ¿por qué no reemplazarla usted mismo con Final Cut antes de enviar la respuesta, en lugar de sugerirle al lector que lo haga? No tiene sentido dejarlo así. La appNamevariable es superflua: tiene más sentido decir simplemente if application "Final Cut" is running then, y posteriormente activate application "Notes". Continuación...
...Cont. De hecho, esa es su secuencia de comandos completa en una sola línea: if application "Final Cut" is running then activate application "Notes". El resto es basura innecesaria. Dicho esto, no creo que esta respuesta resuelva la solución del OP tal como está actualmente. Si el OP ejecuta su secuencia de comandos tal como está, iniciará Notes o no, luego terminará. Eso no es especialmente útil.
open locationtampoco es un comando de Notes . Hay un comando llamado open notes locationpero requiere una URL a una nota preexistente. Como punto final, acabo de hacer una búsqueda en Google y resulta que Final Cut (Pro) no admite secuencias de comandos (a menos que esa información esté desactualizada). Esto significa que no puede usar la runningpropiedad para verificar si se está ejecutando. Por lo tanto, el script no podrá ejecutarse. Siento que esta respuesta debe mejorarse radicalmente con más detalles y correcciones, o eliminarse por ser insuficiente y un ejemplo de AppleScripting incorrecto.
De nada y bien hecho por tomar la crítica en la barbilla. Noté que revisaste tu guión. En una nota menor, no necesita if application "Skype" is running then..., ya que si el script llega tan lejos, significa que el repeatbucle se ha roto, por lo que sabe que la aplicación se está ejecutando. Simplemente necesitas activate application "Notes". En una nota un poco menos menor, todavía no es una secuencia de comandos práctica para usar, ya que requiere que el Editor de secuencias de comandos permanezca abierto y que la secuencia de comandos se ejecute en un bucle. Continuación...
... Continúa Me alegro de que hayas ignorado mi comentario acerca de que Final Cut Pro no admite secuencias de comandos, ya que me equivoqué al suponer que era un mandato necesario para que la runningpropiedad fuera legible. Resulta que es una propiedad central para todos applicationlos objetos en AppleScript, independientemente de la capacidad de script. Todavía siento que deberías reemplazarte "Skype"a "Final Cut Pro"ti mismo. Dejarlo no tiene sentido y es confuso a simple vista (la mayoría de las personas se dirigen directamente al código primero, y no a la prosa).
Pero, en general, esta es una versión mucho mejor que la primera oferta, así que felicitaciones. (No te voté negativo en caso de que te lo estés preguntando).
@CJK una vez que tiene más de 30k, no presta mucha atención a las subidas o bajadas, y no estoy interesado en instalar una nueva aplicación cada vez y gastar $ 299.
¿ Por qué necesitaría instalar Final Cut Pro ? En ningún momento fue una sugerencia, y nunca aconsejaría hacer algo así.
@CJK Tuve que probarlo, así que usé Skype.
Entiendo que. Tampoco tengo Final Cut Pro . Pero puede probar su secuencia de comandos con Skype , luego simplemente sustituya la palabra "Skype" con "Final Cut Pro" inmediatamente antes de pegar la secuencia de comandos en su respuesta, o justo antes de enviar su respuesta. simples. Es exactamente lo que le has aconsejado al lector que haga, así que ¿por qué no lo haces tú mismo y evitas el hoohah?
¡Trabajado como un encanto! Tan sencillo. Muchas gracias @Buscar웃
@MateusRibeiro de nada :)
@MateusRibeiro Si esta es la respuesta que buscó, ¿por qué no deja la aplicación Notas abierta después de terminar su turno? No hay ningún beneficio en usar una secuencia de comandos como esta y, de hecho, deja el Editor de secuencias de comandos abierto y expuesto en la máquina que dijo que otras personas están usando, lo que significa que pueden editar la secuencia de comandos para hacer lo que quieran en su lugar. Esta es una solución terrible a un problema que no necesita un script para resolver.
@CJK, claramente eres un gurú de las secuencias de comandos. Sin embargo, ¡comprender la psique humana puede ser complicado! Hay una gran diferencia entre dejar Notas abiertas, en algún lugar oculto debajo de otras ventanas, y hacer que aparezca justo en la cara del usuario objetivo.
No soy un gurú. Pero, sin querer ser grosero, la respuesta de @wch1zpink hace lo mismo y de una manera muy superior. También le explicó al OP cómo implementar su script correctamente. El suyo simplemente desperdicia recursos del sistema al ejecutarse en un bucle y expone el Editor de scripts al público en general. Pero, es decisión del OP, y son libres de hacer lo que les plazca.
@CJK ¿Y no necesita usar el "Final Cut"? Eso es extraño ! La diferencia es que en un caso puedes dejar un mensaje de texto (limitado) o dejar instrucciones elaboradas con ejemplos. No entiendo la exposición con Script Editor. Ese sistema está abierto a todos los usuarios como indicó OP.
DE ACUERDO. Sí, debería haberlo presionado sobre eso también, pero se estaban discutiendo otros temas que eran más importantes. Él es un mejor programador, por lo que tiendo a hacerle pasar un mal rato para mejorar su código, pero con el tuyo, solo me enfocaba en las cosas pequeñas porque el resto estaba roto de todos modos. Pero ambos tomaron bien las críticas, por lo que ambos merecen una palmadita en la espalda por tratar de ayudar al OP a hacer lo que quiere.
@CJK Creo que usar notas es más fácil que editar la aplicación cada vez. Además, como dije en alguna parte, a veces hay fallas de energía y personas que usan otras aplicaciones, por lo que la ventana estaría realmente enterrada. El bucle es muy ligero, pero implementaré una aplicación para salir después de hacer estallar, así que no pasa nada. Además, para la gloria de Satanás. :D Pero sí, la otra respuesta también es útil. Deseo recompensar al otro chico por ayudar.

No tengo "Final Cut.app", así que probé este código con TextEdit.app. Si guarda este código en el Editor de secuencias de comandos como una aplicación abierta, en la primera ejecución, esta aplicación mostrará un cuadro de diálogo para que ingrese el mensaje que desea que lea la persona que abre "Final Cut". Si Final Cut se cierra o se cierra inesperadamente... Al volver a abrir Final Cut, se volverá a mostrar el cuadro de diálogo original que configuró previamente. Cuando sales de la aplicación Stay Open y luego la vuelves a iniciar... Ese cuadro de diálogo volverá a aparecer pidiéndole que ingrese el mensaje que desea que lea la persona que abre "Final Cut".

property theApp : "TextEdit" -- Change this
property theMessage : missing value
property appIsRunning : missing value

activate
set theMessage to text returned of (display dialog ¬
    "THE MESSAGE" default answer ¬
    "Message You Want To Display" buttons ¬
    "OK" default button ¬
    "OK" with title ¬
    "Message You Want To Display" with icon 2)

on idle
    repeat
        repeat until appIsRunning is true
            delay 5 -- avoids dialog and theApp (if relaunching) opening at same time
            set appIsRunning to application theApp is running
            if appIsRunning is true then
                activate
                -- Running A Display Dialog Within An Application Tell Block... 
                -- Inherits The Apps Icon To Be Used In The Dialog Window
                tell application theApp to display dialog theMessage buttons {"OK"} default button "OK" with icon 1
            end if
        end repeat
        -- next line necessary to re-trigger the "repeat until" loop again
        set appIsRunning to application theApp is running
        return 5 -- in seconds
    end repeat
end idle
¿Puedo pedirle que verifique dos veces para ver si necesita el repeatbucle exterior en su on idlecontrolador? Dado que el controlador se ejecuta cada 5 segundos (desde su return 5), sospecho que es superfluo. Mi segunda consulta es si se desharía de if appIsRunning is true thenmover el contenido de ese bloque justo fuera del repeatbucle interno, que en realidad solo sirve como monitor en un ciclo de retraso. Una vez que se interrumpe el bucle, sabe que appIsRunninges cierto, por lo que se puede mostrar el cuadro de diálogo; entonces tampoco hay necesidad de set appIsRunninguna segunda vez.
De hecho, simplemente deseche la appIsRunningpropiedad por completo. Solo lo utiliza de manera efectiva una vez, por lo que no tiene ningún valor real. Simplemente puede hacer: repeat until application theApp is running... delay 5... end repeat. Entonces activatey display dialog, entonces return 5.
Recorté la mayor cantidad de grasa que pude y agregué algunas descripciones comentadas. Gracias a todos... por los consejos.
@CJK Probé tu sugerencia de repeat until application theApp is running... No funciona correctamente. Ejecutar la aplicación permanecer abierta con el código ajustado que sugirió... Siempre obliga a la aplicación de destino a abrirse si está cerrada
Acabo de probar su secuencia de comandos con mis dos sugerencias anteriores implementadas, como una aplicación Stay Open , probada con TextEdit como la aplicación de destino. El subprograma/secuencia de comandos se ejecuta exactamente como se esperaba y no obliga a que se inicie la aplicación de destino ( Información del sistema: versión de AppleScript : "2.7", versión del sistema : "10.13.6"). Como sospechaba, el repeatbucle exterior es demostrablemente innecesario en mi prueba. Eso sí, esto es más "FYI". Su guión funciona , así que supongo que todo lo que estoy haciendo es quisquilloso.