Automator'da oluşturulan bir URL işleyici uygulamasında tıklanan bir URL'ye nasıl erişilir


14

Şu anda OS X'te varsayılan URL işleme davranışını değiştirmeye çalışıyorum. Bir web tarayıcısının dışındaki herhangi bir bağlantıya tıkladığınızda, bu URL'yi varsayılan web tarayıcısında açmak yerine çalışma alanına kopyalamak istiyorum - örneğin Skype görüşmesinde bir bağlantıyı tıklamak, bu URL'yi Firefox'ta (şu anda varsayılan web tarayıcımdır) açmak yerine OS X çalışma alanına kopyalamalıdır.

Çözümleri düşündüm, ama şu anda bir çözüm bulamıyorum. URL'leri kendisine gönderilen çalışma alanına URL yerleştiren bir uygulama oluşturabilir ve bu uygulamayı varsayılan web tarayıcısı olarak ayarlayabilirsem, hedefime ulaşabilirdim.

Automator ile shell komutunu çalıştıran bir uygulama oluşturdum pbcopyve bu uygulamayı varsayılan web tarayıcım olarak ayarladım, ancak beklenen sonucu alamadım. Bazı testler yaptım ve uygulamanın bir bağlantıyı tıklayarak çalıştığını doğrulayabilirim, ancak URL'yi uygulama / kabuk komut dosyasına geçiremiyorum. Hem stdin'i hem de başarılı bir argümanı denedim, ama başarılı olamadım.

Automator ile oluşturulan bir uygulamanın tıklanan bir URL'yi almasının ve pbcopybu uygulamaya URL'ler için (varsayılan) işleyici olarak ayarlandığı zaman göndermesinin bir yolu var mı ?

Alternatif olarak, girişi alan ve çalışma alanına yerleştiren sahte bir web tarayıcısı oluşturmanın Automator'dan daha iyi bir yolu var mı? Yoksa özel bir uygulama / komut dosyası olmadan hedefime ulaşmanın başka bir yolu var mı?


Tam bir çözüm olmadığı için bunu bir cevap olarak koymuyorum , ancak bir başlangıç ​​- Bir otomatikleştirici uygulamasını varsayılan tarayıcı olarak ayarlamak için rubicode.com/Software/RCDefaultApp kullandım . Automator'da Panoya Kopyalama eylemi vardır. Bir automator uygulamasına herhangi bir metin girişi alamıyorum.
penguinrob 29:12

Aynen, ama ben Choosy kullandım. Oldukça fazla test yaptım ve aşağıdakileri buldum: 1) Automator uygulaması çalışıyor. 2) Hiç bir girdi almıyor gibi görünüyor. 3) Ergo, bir tarayıcıya "link" gönderildiğinde, düz metin olarak bir URL gönderilmez. Bu farklı bir şekilde ele alınmalı ve sorunun asıl nedeni budur.
Timothy Mueller-Harder

Yanıtlar:


13

Mac OS X'te URL'nin açılma şekli düşündüğünüzden daha karmaşıktır. Bir URL'yi tıkladığınızda, Mac OS X yalnızca tarayıcıyı açmak için URL'yi iletmez; bunun yerine, kAEGetURLURL'yi içeren kimliğiyle bir Apple Etkinliği gönderir .

Automator'ı hiç kullanmadım (tipik kullanımım için çok yavaş ve sınırlı), bu yüzden bundan emin değilim, ancak Apple Events'i işleme yeteneğinden şüpheliyim. Bu nedenle, istediğinizi elde etmek için Automator'u kullanamazsınız.

Bu nedenle Xcode'da normal bir Objective-C uygulamasına başvurmanız gerekir.

Yapmanız gereken iki temel şey:

  1. kAEGetURL olayını almak uygulamanızı kayıt ve set CFBundleURLTypesiçerecek şekilde uygulamanızın Info.plist içinde httpve https.

  2. KAEGetURL olayını işleyen bir yöntem uygulayın ve URL'yi panoya kopyalayın.

Bu iki şeyin Objective-C'de yapması nispeten kolaydır; göstermek için, bunu yapan örnek bir uygulama oluşturdum. Sen de görüntüleyebilirsiniz https://github.com/houbysoft/short/tree/master/Copy%20URL%20to%20Clipboard . En önemli dosya https://github.com/houbysoft/short/blob/master/Copy%20URL%20to%20Clipboard/Copy%20URL%20to%20Clipboard/AppDelegate.m , orada nasıl kaydolacağınızı görebilirsiniz olayı (bu, applicationWillFinishLaunching: yönteminde yapılır) ve panoya nasıl kopyalanır (bu getUrl: withReplyEvent: yönteminde yapılır).

Tembel hissediyorsanız ve bunun işe yaradığını görmek istiyorsanız, bu dosyayı alın, uygulamayı ondan çıkarın, varsayılan web tarayıcısı olarak ayarlayın (Safari Tercihleri'ni açın ve Varsayılan web tarayıcısı alanında bu uygulamaya göz atın). Ardından Skype'taki bağlantınıza tıklayın, doğrudan panoya kopyalanmalıdır.


Cevabınız için teşekkür ederim. URL'nin OSX'te nasıl ilerlediğini bilmiyordum. Kodunuza bir göz attım, ama Objective-C'yi çok bilmiyorum. Ancak, ortaya çıkan uygulama bir cazibe gibi çalışır ve en başından beri istediğim şeydi. Tekrar teşekkürler!
DjDCH

App güzel iş (let). Ödül vermek isterim, ancak Automator'ın bunu yapmak için bir kAEGetURL olayını kabul etmek için zorlanabileceği (veya yapamayacağı) konusunda bazı kesin bilgileri kaçırıyorum.
kopischke

@kopischke: Apple olaylarından bahsetmek için Automator yardımında aradım ve hiçbir şey bulunamadı. Automator'ın bunu desteklemediğini varsaymanın adil olduğunu düşünüyorum.
houbysoft

Bunu, XCode / ObjC'ye girmeden ve kendi uygulamanızı derlemeden bir Automator iş akışını genişletmenin "mantıklı" yolu olan AppleScript ile yapmak mümkündür. (hepsi bu kadar karmaşık değil, ancak muhtemelen AppleScript daha kolay olurdu.)
ocodo

Bu, 10.11'de işe yaramıyor gibi görünüyor. "/ Uygulamalar / URL'yi Clipboard.app
dosyasına
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.