Automatorで作成されたURLハンドラーアプリケーションでクリックされたURLにアクセスする方法


14

現在、OS XのデフォルトのURL処理動作を変更しようとしています。Webブラウザーの外部のリンクをクリックすると、このURLをデフォルトのWebブラウザーで開くのではなく、ペーストボードにコピーしたいです。 、Skype会話のリンクをクリックすると、このURLがFirefox(現在はデフォルトのWebブラウザー)で開かれる代わりに、OS Xペーストボードにコピーされます。

私はソリューションについて考えましたが、現在、それを実装することはできません。URLをペーストボードに送信して送信するアプリケーションを作成し、このアプリケーションをデフォルトのWebブラウザーとして設定できれば、目標を達成できます。

シェルコマンドを実行するAutomatorでアプリケーションを作成し、pbcopyこのアプリケーションをデフォルトのWebブラウザーとして設定しましたが、期待した結果が得られませんでした。いくつかのテストを行い、リンクをクリックするとアプリケーションが実行されることを確認できますが、アプリケーション/シェルスクリプトに渡されたURLを取得できません。stdinまたは渡された引数の両方を試しましたが、成功しませんでした。

Automatorで作成pbcopyされたアプリケーションが、URLの(デフォルト)ハンドラーとして設定されている場合、クリックされたURLを取得してに送信する方法はありますか?

あるいは、Automatorよりも入力を受け取ってペーストボードに入れる偽のWebブラウザを作成するより良い方法はありますか?または、カスタムアプリケーション/スクリプトなしで目標を達成できる他の方法はありますか?


完全な解決策ではないので、これを答えとしてはいませんが、開始点です-rubicode.com/Software/RCDefaultAppを使用して、自動化アプリケーションをデフォルトのブラウザーとして設定しました。Automatorには、クリップボードにコピーするアクションがあります。オートマトンアプリにテキストを入力できません。
ペンギンロブ

同じですが、Choosyを使用しました。かなりの量のテストを行ったところ、次のことがわかりました。1)Automatorアプリが実行されます。2)どんな種類の入力も取得していないようです。3)エルゴ、ブラウザに「リンク」が送信されるとき、プレーンテキストのURLは送信されません。これは別の方法で処理する必要があり、それが実際に問題となるのです。
ティモシーミューラー-ハーダー

回答:


13

Mac OS XでURLを開く方法は、実際には思っているよりも複雑です。URLをクリックすると、Mac OS Xはブラウザに開くURLを渡すだけではありません。代わりに、kAEGetURLURLを含むIDのAppleイベントを送信します。

Automatorを実際に使用したことはありません(速度が遅すぎて、通常の使用には制限されているため)。したがって、Automatorを使用して目的を達成することはできません。

したがって、Xcodeの通常のObjective-Cアプリに頼る必要があります。

あなたがする必要がある2つの基本的なことは次のとおりです。

  1. kAEGetURLイベントを受信するためにアプリを登録し、設定CFBundleURLTypes含めるようにあなたのアプリケーションのInfo.plistにhttphttps

  2. kAEGetURLイベントを処理するメソッドを実装し、URLをクリップボードにコピーします。

これらの2つのことは、Objective-Cでは比較的簡単です。説明のために、これを行うサンプルアプリケーションを作成しました。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/AppDelegate.mです。そこで登録する方法を見ることができますイベント(これはapplicationWillFinishLaunching:メソッドで行われます)およびそれをクリップボードにコピーする方法(これはgetUrl:withReplyEvent:メソッドで行われます)。

怠feelingで、これが機能することを確認したい場合は、このファイルを取得し、そこからアプリケーションを抽出し、それをデフォルトのWebブラウザーとして設定します(Safariの設定を開き、[デフォルトのWebブラウザー]フィールドでそのアプリを参照します)。次に、Skypeでリンクをクリックすると、クリップボードに直接コピーされます。


ご回答ありがとうございます。OSXでURLがどのように処理されるのか知りませんでした。あなたのコードを見てみましたが、Objective-Cについてはあまり知りません。しかし、作成されたアプリケーションは魅力のように機能し、最初から私が望んでいたものです。再度、感謝します!
-DjDCH

アプリの素晴らしい仕事(レット)。賞金を授与したいのですが、AutoMatorがkAEGetURLイベントを承認するように強制することができる(またはできない)場合、質問に関するいくつかの決定的な情報がありません。
kopischke

@kopischke:Appleのイベントについて言及しているAutomatorのヘルプを検索したところ、何も見つかりませんでした。Automatorがこれをサポートしていないと仮定するのは公平だと思います。
houbysoft

これをAppleScriptで行うことができます。これは、XCode / ObjCを掘り下げて独自のアプリをコンパイルすることなく、Automatorワークフローを拡張する「論理的な」方法です。(それほど複雑ではありませんが、AppleScriptの方が簡単だと思われます。)
ocodo

これは10.11では機能しないようです。「/アプリケーション/コピーURL Clipboard.appへのHTTPブラウザとして使用することはできません」
TJ Luoma
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.