{"id":524,"date":"2018-05-14T10:00:45","date_gmt":"2018-05-14T09:00:45","guid":{"rendered":"http:\/\/www.programaraciegas.net\/?p=524"},"modified":"2018-05-09T05:10:34","modified_gmt":"2018-05-09T04:10:34","slug":"abrir-y-comprobar-si-una-aplicacion-esta-abierta-en-macos-con-applescript","status":"publish","type":"post","link":"https:\/\/programaraciegas.net\/?p=524","title":{"rendered":"Abrir y comprobar si una aplicaci\u00f3n est\u00e1 abierta en MacOS con AppleScript"},"content":{"rendered":"<p>Con AppleScript podemos enviar y manipular aplicaciones para conseguir realizar tareas pero para que estas aplicaciones puedan realizar dichas tareas deben estar abiertas. Por esta raz&oacute;n, en muchas ocasiones, debemos asegurarnos dentro del c&oacute;digo de nuestro script si la aplicaci&oacute;n est&aacute; abierta y de no ser as&iacute; abrirla para poder operar con ella.<\/p>\n<h2>Preguntando si la aplicaci&oacute;n est&aacute; en ejecuci&oacute;n<\/h2>\n<p>Ya vimos en el art&iacute;culo <a href=\"http:\/\/www.programaraciegas.net\/?p=219\">estructuras condicionales en AppleScript<\/a> c&oacute;mo crear una estructura condicional para hacer preguntas con nuestro script.<\/p>\n<p>Con una sentencia <strong>if then<\/strong> podemos preguntar a una aplicaci&oacute;n si est&aacute; activa o no. Por ejemplo, el siguiente c&oacute;digo pregunta si la aplicaci&oacute;n Mensajes est&acute; activa:<\/p>\n<p><code><br \/>\nif application \"Messages\" is running then<br \/>\n   -- c\u00f3digo a ejecutar cuando mensajes est\u00e1 abierto<br \/>\nend if<br \/>\n<\/code><\/p>\n<p>Tambi&eacute;n podemos consultar si la aplicaci&oacute;n no est&aacute; disponible:<\/p>\n<p><code><br \/>\nif application \"Messages\" is not running then<br \/>\n   -- c\u00f3digo a ejecutar cuando la aplicaci\u00f3n no est\u00e1 disponible<br \/>\nend if<br \/>\n<\/code><\/p>\n<h2>Abriendo la aplicaci&oacute;n<\/h2>\n<p>En AppleScript con el comando <strong>tell<\/strong> podemos enviar diversos comandos a las aplicaciones. Uno de estos comandos es ordenarle que se abra. Por ejemplo, abramos la aplicaci&oacute;n mensajes:<\/p>\n<p><code><br \/>\ntell application \"Messages\" to activate<br \/>\n<\/code><\/p>\n<p>Con <strong>tell<\/strong> tambi&eacute;n podemos crear bloques de c&oacute;digo para enviar una serie de comandos a una aplicaci&oacute;n. Su sint&aacute;xis es la siguiente:<\/p>\n<p><code><br \/>\ntell application \"Nombre de aplicaci\u00f3n<br \/>\n   -- C\u00f3digo a ejecutar con la aplicaci\u00f3n<br \/>\nend tell<br \/>\n<\/code><\/p>\n<p>En muchas ocasiones es recomendable incluir pausas (comando <strong>delay<\/strong>) entre una operaci&oacute;n y otra que enviemos a una aplicaci&oacute;n para darle tiempo a la aplicaci&oacute;n a procesar el comando y obtener un resultado.<\/p>\n<h3>Cerrando la aplicaci&oacute;n<\/h3>\n<p>Tambi&eacute;n podemos ordenar a una aplicaci&oacute;n que se cierre. El comando en lugar de <strong>activate<\/strong> es <strong>quit<\/strong>. El c&oacute;digo es el siguiente:<\/p>\n<p><code><br \/>\ntell application \"Messages\" to quit<br \/>\n<\/code><\/p>\n<h2>Ejemplo completo<\/h2>\n<p>En un script real que quisiera utilizar la aplicaci&oacute;n mensajes para algo la estructura del c&oacute;digo deber&iacute;a seguir la siguiente l&oacute;gica:<\/p>\n<ul>\n<li>Si la aplicaci&oacute;n no est&aacute; activa<\/li>\n<li>Entonces abre la aplicaci&oacute;n<\/li>\n<li>Opera con la aplicaci&oacute;n mensajes con la tranquilidad de que se sabe que recibir&aacute; nuestros comandos porque sabemos que est&aacute; abierta<\/li>\n<\/ul>\n<p>Nuestro script final quedar&iacute;a de la siguiente forma:<\/p>\n<p><code><br \/>\nif application \"Messages\" is not running then<br \/>\n   tell application \"Messages\" to activate<br \/>\nend if<br \/>\n<\/code><\/p>\n<p>Esta pr&aacute;ctica de seguridad es muy recomendable para asegurarnos de que nuestros scripts funcionan siempre como se espera.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Con AppleScript podemos enviar y manipular aplicaciones para conseguir realizar tareas pero para que estas aplicaciones puedan realizar dichas tareas deben estar abiertas. Por esta raz&oacute;n, en muchas ocasiones, debemos asegurarnos dentro del c&oacute;digo de nuestro script si la aplicaci&oacute;n est&aacute; abierta y de no ser as&iacute; abrirla para poder operar con ella. Preguntando si &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/programaraciegas.net\/?p=524\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \u00abAbrir y comprobar si una aplicaci\u00f3n est\u00e1 abierta en MacOS con AppleScript\u00bb<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80,6],"tags":[83,275,276],"class_list":["post-524","post","type-post","status-publish","format-standard","hentry","category-applescript","category-programacion","tag-applescript-2","tag-comandos","tag-mensajes"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=524"}],"version-history":[{"count":0,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/524\/revisions"}],"wp:attachment":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}