14 votos

Cómo acceder a un clic de la URL en una dirección URL de controlador de la aplicación creada en Automator

Actualmente estoy tratando de modificar la dirección URL predeterminada de manejo de comportamiento en OS X. me gustaría, al hacer clic en cualquier enlace fuera de un navegador web, copie esta URL a la mesa de trabajo, en lugar de abrirlo en el navegador web por defecto – por ejemplo, haciendo clic en un enlace de una conversación de Skype debe copiar esta URL para el OS X mesa de trabajo en lugar de abrir en Firefox (que actualmente es mi navegador por defecto).

He pensado acerca de las soluciones, pero estoy actualmente no se puede implementar uno. Si puedo crear una aplicación que pone la Url en la mesa de trabajo que se le envían, y se puede establecer esta aplicación como navegador web por defecto, yo sería capaz de lograr mi objetivo.

He creado una aplicación con Automator que se ejecuta el comando de shell pbcopy y han creado esta aplicación como mi navegador por defecto, pero no obtuve el resultado esperado. Hice algunas pruebas y me puede confirmar que la aplicación se ejecuta al hacer clic en un enlace, sin embargo, no puedo obtener la URL se pasa a la aplicación / script de shell. He intentado tanto stdin o un argumento pasado, pero sin éxito.

Hay una forma para una aplicación creada con Automator para recuperar un clic de URL y enviar a pbcopy, cuando la aplicación se establece como un (predeterminado) controlador de Url?

Alternativamente, hay una mejor manera de crear un falso navegador web que toma la entrada y la pone en la mesa de trabajo de Automator? O hay alguna otra manera de que puedo lograr mi objetivo, sin una aplicación personalizada / script?

13voto

GaryF Puntos 11921

La manera en la URL de apertura en Mac OS X que en realidad es más complicado de lo que se podría pensar. Cuando haga clic en una dirección URL, Mac OS X no pasar el navegador la dirección URL para abrir; en su lugar, se envía un Evento de Apple, con el ID kAEGetURL, que contiene la dirección URL.

Yo en realidad nunca se usa Automator (es muy lento y limitado para mi uso típico), así que no estoy seguro acerca de esto, pero dudo de que tiene la capacidad para manejar Eventos de Apple. Por lo tanto, usted no será capaz de utilizar Automator para lograr lo que desea.

Por lo tanto, tienen que recurrir a una normal Objective-C de la aplicación en Xcode.

Las dos cosas básicas que usted necesita hacer es:

  1. registre su aplicación para la recepción de la kAEGetURL evento, y establecer el CFBundleURLTypes en la aplicación de la Información.plist para incluir http y https.

  2. Implementar un método de manejo de la kAEGetURL evento, y hacer es copiar la URL en el portapapeles.

Estas dos cosas son relativamente fáciles de hacer en Objective-C; a modo de ejemplo, he creado una aplicación de ejemplo que hace esto. Usted puede ver en el https://github.com/houbysoft/short/tree/master/Copy%20URL%20to%20Clipboard. El archivo más importante es https://github.com/houbysoft/short/blob/master/Copy%20URL%20to%20Clipboard/Copy%20URL%20to%20Clipboard/AppDelegate.mallí se puede ver cómo registrarse para el evento (esto se hace en el applicationWillFinishLaunching: método) y cómo se copia en el portapapeles (esto se hace en el getUrl:withReplyEvent: método).

Si te sientes perezoso y quiero ver que esto funciona, coge este archivo, extracto de la solicitud de la misma, establece que como navegador web por defecto (abrir las Preferencias de Safari, y navegar por la aplicación en el navegador web Predeterminado de campo). A continuación, haga clic en su enlace en Skype, y se debe copiar directamente al portapapeles.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X