Come accedere a un URL cliccato in un'applicazione di gestione URL creata in Automator

13

Attualmente sto cercando di modificare il comportamento di gestione dell'URL predefinito in OS X. Vorrei che, facendo clic su qualsiasi collegamento esterno a un browser Web, copi questo URL sul tavolo di montaggio invece di aprirlo nel browser Web predefinito - Ad esempio, facendo clic su un collegamento in una conversazione Skype è necessario copiare questo URL nel pannello di lavoro OS X invece di aprirlo in Firefox (che è attualmente il mio browser predefinito).

Ho pensato a soluzioni, ma al momento non sono in grado di implementarne una. Se riesco a creare un'applicazione che inserisca gli URL nel pannello di lavoro che gli viene inviato e possa impostare questa applicazione come browser Web predefinito, sarei in grado di raggiungere il mio obiettivo.

Ho creato un'applicazione con Automator che esegue il comando shell pbcopy e ho impostato questa applicazione come browser Web predefinito, ma non ho ottenuto il risultato previsto. Ho fatto alcuni test e posso confermare che l'applicazione viene eseguita facendo clic su un collegamento, tuttavia, non riesco a far passare l'URL allo script applicazione / shell. Ho provato sia lo stdin che un argomento passato, ma senza successo.

Esiste un modo per un'applicazione creata con Automator per recuperare un URL cliccato e inviarlo a pbcopy , quando quell'applicazione è impostata come gestore (predefinito) per gli URL?

In alternativa, c'è un modo migliore per creare un browser Web fasullo che prende l'input e lo inserisce nel pannello di montaggio di Automator? O c'è un altro modo in cui posso raggiungere il mio obiettivo senza un'applicazione / script personalizzato?

    
posta DjDCH 29.03.2012 - 21:50
fonte

1 risposta

12

Il modo in cui l'apertura dell'URL in Mac OS X è in realtà più complicato di quanto si pensi. Quando fai clic su un URL, Mac OS X non passa semplicemente al browser l'URL da aprire; invece, invia un Apple Event, con l'ID kAEGetURL , contenente l'URL.

Non ho mai usato Automator (è troppo lento e limitato per il mio uso tipico), quindi non ne sono sicuro, ma dubito che abbia la capacità di gestire gli Apple Event. Pertanto non potrai utilizzare Automator per ottenere ciò che desideri.

Dovrai quindi ricorrere a una normale app Objective-C in Xcode.

Le due cose fondamentali che devi fare sono:

  1. registra la tua app per ricevere l'evento kAEGetURL e imposta CFBundleURLTypes nel file Info.plist dell'app per includere http e https .

  2. Implementa un metodo per gestire l'evento kAEGetURL e falla copiare l'URL negli Appunti.

Queste due cose sono relativamente semplici da fare in Objective-C; per illustrare, ho creato un'applicazione di esempio che esegue questa operazione. Puoi visualizzarlo all'indirizzo link . Il file più importante è link , puoi vedere come registrarti per l'evento (questo è fatto nell'applicazioneWillFinishLaunching: metodo) e come copiarlo negli appunti (questo è fatto nel getUrl: withReplyEvent: method).

Se ti senti pigro e vuoi solo vedere che funziona, prendi questo file , estrai l'applicazione da esso, impostalo come browser Web predefinito (apri le Preferenze di Safari e cerca l'app nel campo Browser web predefinito). Quindi fai clic sul tuo link in Skype e dovrebbe essere copiato direttamente negli Appunti.

    
risposta data 01.04.2012 - 02:55
fonte

Leggi altre domande sui tag