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?
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.
appName
variable es superflua: tiene más sentido decir simplemente if application "Final Cut" is running then
, y posteriormente activate application "Notes"
. Continuación...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 location
tampoco es un comando de Notes . Hay un comando llamado open notes location
pero 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 running
propiedad 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.if application "Skype" is running then...
, ya que si el script llega tan lejos, significa que el repeat
bucle 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...running
propiedad fuera legible. Resulta que es una propiedad central para todos application
los 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).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
repeat
bucle exterior en su on idle
controlador? 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 then
mover el contenido de ese bloque justo fuera del repeat
bucle interno, que en realidad solo sirve como monitor en un ciclo de retraso. Una vez que se interrumpe el bucle, sabe que appIsRunning
es cierto, por lo que se puede mostrar el cuadro de diálogo; entonces tampoco hay necesidad de set appIsRunning
una segunda vez.appIsRunning
propiedad 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 activate
y display dialog
, entonces return 5
.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á cerradarepeat
bucle 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.
Ruscos
mateo ribeiro
Ruscos
mateo ribeiro
mateo ribeiro
mateo ribeiro
CJK
mateo ribeiro
Ruscos
mateo ribeiro
JBis
JBis
mateo ribeiro
JBis