ऑटोमेटर में बनाए गए URL हैंडलर एप्लिकेशन में क्लिक किए गए URL तक कैसे पहुंचें


14

मैं वर्तमान में OS X में डिफ़ॉल्ट URL हैंडलिंग व्यवहार को संशोधित करने की कोशिश कर रहा हूं। मैं इस वेब URL के बाहर किसी भी लिंक पर क्लिक करते समय, इस URL को डिफ़ॉल्ट वेब ब्राउज़र में खोलने के बजाय पेस्टबोर्ड पर कॉपी करना चाहूंगा - उदाहरण के लिए Skype वार्तालाप में एक लिंक पर क्लिक करने पर इस URL को फ़ायरफ़ॉक्स में खोलने के बजाय OS X पेस्टबोर्ड पर कॉपी करना चाहिए (जो वर्तमान में मेरा डिफ़ॉल्ट कंप्यूटर ब्राउज़र है)।

मैंने समाधान के बारे में सोचा है, लेकिन मैं वर्तमान में एक को लागू करने में असमर्थ हूं। अगर मैं एक एप्लिकेशन बना सकता हूं जो URL को पेस्टबोर्ड में डालता है जो इसे भेजे जाते हैं, और इस एप्लिकेशन को डिफ़ॉल्ट वेब ब्राउज़र के रूप में सेट कर सकते हैं, तो मैं अपना लक्ष्य प्राप्त करने में सक्षम होऊंगा।

मैंने Automator के साथ एक एप्लिकेशन बनाया जो शेल कमांड को निष्पादित करता है pbcopyऔर इस एप्लिकेशन को मेरे डिफ़ॉल्ट वेब ब्राउज़र के रूप में सेट किया है, लेकिन मुझे अपेक्षित परिणाम नहीं मिला। मैंने कुछ परीक्षण किया और मैं पुष्टि कर सकता हूं कि एप्लिकेशन किसी लिंक पर क्लिक करने पर चलता है, हालांकि, मैं URL को एप्लिकेशन / शेल स्क्रिप्ट में पास नहीं कर सकता। मैंने स्टडिन या एक पारित तर्क दोनों की कोशिश की, लेकिन सफलता के बिना।

क्या स्वचालित एप्लिकेशन के साथ क्लिक किए गए URL को पुनः प्राप्त करने और उसे भेजने के लिए बनाए गए एप्लिकेशन के लिए एक तरीका है pbcopy, जब उस एप्लिकेशन को URL के लिए एक (डिफ़ॉल्ट) हैंडलर के रूप में सेट किया गया है?

वैकल्पिक रूप से, क्या नकली वेब ब्राउज़र बनाने के लिए एक बेहतर तरीका है जो इनपुट लेता है और इसे ऑटोमोटिव की तुलना में पेस्टबोर्ड में डालता है? या कोई और तरीका है कि मैं एक कस्टम एप्लिकेशन / स्क्रिप्ट के बिना अपने लक्ष्य को प्राप्त कर सकता हूं?


इसे एक उत्तर के रूप में नहीं डाल रहा है क्योंकि यह एक पूर्ण समाधान नहीं है, लेकिन यह एक शुरुआत है - मैंने एक स्वचालक अनुप्रयोग को डिफ़ॉल्ट ब्राउज़र के रूप में सेट करने के लिए rubicode.com/Software/RCDefaultApp का उपयोग किया । ऑटोमेकर में, कॉपी टू क्लिपबोर्ड पर कार्रवाई होती है। मैं अभी तक किसी भी ऑटोमोटिव ऐप पर कोई टेक्स्ट इनपुट नहीं प्राप्त कर सकता हूं।
पेंगुइन

डिट्टो, लेकिन मैंने चियोसी का इस्तेमाल किया। मैंने उचित मात्रा में परीक्षण किया है, और मैंने निम्नलिखित पाया है: 1) ऑटोमेकर ऐप चलता है। 2) यह किसी भी तरह के इनपुट को प्राप्त नहीं करता है। 3) एर्गो, जब किसी ब्राउज़र को "लिंक" भेजा जाता है, तो उसे प्लेनटेक्स्ट में URL नहीं भेजा जाता है। इसे कुछ अलग तरीके से संभाला जाना चाहिए, और वास्तव में यही सवाल है।
टिमोथी मुलर-हार्डर

जवाबों:


13

मैक ओएस एक्स में जिस तरह से यूआरएल खोलना वास्तव में अधिक जटिल है जितना आप सोचेंगे। जब आप एक URL पर क्लिक करते हैं, तो Mac OS X ब्राउज़र को खोलने के लिए केवल पास नहीं करता है; इसके बजाय, यह एक Apple ईवेंट भेजता है kAEGetURL, जिसमें ID होता है , जिसमें URL होता है।

मैंने कभी भी ऑटोमेकर का उपयोग नहीं किया (यह सिर्फ मेरे काम के लिए बहुत धीमा और सीमित है), इसलिए मुझे इस बारे में निश्चित नहीं है, लेकिन मुझे संदेह है कि इसमें ऐप्पल इवेंट्स को संभालने की क्षमता है। इसलिए आप जो चाहते हैं उसे प्राप्त करने के लिए आप ऑटोमेटर का उपयोग नहीं कर पाएंगे।

इसलिए आपको Xcode में एक सामान्य Objective-C ऐप का सहारा लेना होगा।

आपको जिन दो बुनियादी चीजों की आवश्यकता है, वे हैं:

  1. kAEGetURL ईवेंट प्राप्त करने के लिए अपना ऐप पंजीकृत करें, और शामिल करने के लिए CFBundleURLTypesअपने ऐप के Info.plist में सेट करें httpऔर https

  2. KAEGetURL ईवेंट को हैंडल करने वाली एक विधि को लागू करें, और इसे URL को क्लिपबोर्ड पर कॉपी करें।

ऑब्जेक्टिव-सी में करने के लिए ये दोनों चीजें अपेक्षाकृत सरल हैं; वर्णन करने के लिए, मैंने एक नमूना अनुप्रयोग बनाया है जो ऐसा करता है। आप इसे https://github.com/houbysoft/short/tree/master/Copy%20URL%20to%20Clipboard पर देख सकते हैं । सबसे महत्वपूर्ण फ़ाइल https://github.com/houbysoft/short/blob/master/Copy%20URL%20to%20Clipboard/Copy%20URL%20to%20Clipboard/AppDoggate.m है , वहां आप देख सकते हैं कि रजिस्टर करने के लिए कैसे पंजीकरण करें। घटना (यह ApplicationWillFinishLaunching: पद्धति में किया जाता है) और इसे क्लिपबोर्ड पर कैसे कॉपी किया जाता है (यह getUrl में किया जाता है: withReplyEvent: विधि)।

यदि आप आलसी महसूस कर रहे हैं और बस यह देखना चाहते हैं कि यह काम करता है, तो इस फ़ाइल को पकड़ो , इसमें से एप्लिकेशन निकालें, इसे डिफ़ॉल्ट वेब ब्राउज़र के रूप में सेट करें (सफारी वरीयताएँ खोलें, और डिफ़ॉल्ट वेब ब्राउज़र फ़ील्ड में उस ऐप के लिए ब्राउज़ करें)। फिर Skype में अपने लिंक पर क्लिक करें, और इसे सीधे आपके क्लिपबोर्ड पर कॉपी किया जाना चाहिए।


आपके उत्तर के लिए धन्यवाद। मुझे नहीं पता था कि OSX में URL कैसे आगे बढ़ता है। मैंने आपके कोड पर एक नज़र डाली है, लेकिन मैं ऑब्जेक्टिव-सी को नहीं जानता। लेकिन, आपका परिणामी आवेदन एक आकर्षण की तरह काम करता है और जो मैं शुरू से चाहता था। एक बार फिर धन्यवाद!
DjDCH

एप्लिकेशन पर अच्छा काम (दो)। मैं बाउंटी को शुभकामना देना चाहता हूं, लेकिन मैं इस सवाल पर कुछ निश्चित जानकारी को याद कर रहा हूं यदि ऑटोमेकर कर सकता है (या नहीं) ऐसा करने के लिए एक kAEGetURL घटना को स्वीकार करने के लिए मजबूर किया जा सकता है।
kopischke

@kopischke: मैंने अभी-अभी Apple घटनाओं के किसी उल्लेख के लिए ऑटोमेकर सहायता की खोज की, और कुछ भी नहीं मिला। मुझे लगता है कि यह मानना ​​उचित है कि ऑटोमेटर इसका समर्थन नहीं करता है।
houbysoft

AppleScript के साथ ऐसा करना संभव है, जो कि XCode / ObjC में डील किए बिना और अपने स्वयं के ऐप को संकलित किए बिना एक ऑटोमेकर वर्कफ़्लो का विस्तार करने का "तार्किक" तरीका होगा। (ऐसा नहीं है कि यह सब जटिल है, लेकिन यह संभावना है कि AppleScript आसान होगा।)
ocodo

यह 10.11 पर काम नहीं करता है। "" अनुप्रयोग / कॉपी यूआरएल क्लिपबोर्ड के लिए। HTTP ब्राउज़र के रूप में उपलब्ध नहीं है "
टीजे लुओमा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.