如何在Automator中创建的URL处理程序应用程序中访问单击的URL


14

我目前正在尝试修改OS X中的默认URL处理行为。我想在单击Web浏览器外部的任何链接时,将此URL复制到粘贴板,而不是在默认Web浏览器中打开它-例如,单击Skype对话中的链接应将此URL复制到OS X粘贴板,而不是在Firefox(当前是我的默认Web浏览器)中打开它。

我已经考虑过解决方案,但是目前无法实现。如果我可以创建一个将URL放入发送给它的粘贴板的应用程序,并且可以将该应用程序设置为默认的Web浏览器,则可以实现我的目标。

我用Automator创建了一个执行shell命令的pbcopy应用程序,并将该应用程序设置为默认的Web浏览器,但是没有得到预期的结果。我做了一些测试,可以确认应用程序是否在单击链接时运行,但是,我无法将URL传递给应用程序/ shell脚本。我尝试了stdin或通过的参数,但是都没有成功。

pbcopy当该应用程序设置为URL的(默认)处理程序时,是否可以使用Automator创建的应用程序检索单击的URL并将其发送给?

或者,是否有比Automator更好的方法来创建伪造的Web浏览器来接受输入并将其放置在剪贴板中?或者,没有自定义应用程序/脚本,还有其他方法可以实现我的目标吗?


因为这不是一个完整的解决方案,所以不能以此作为答案,但这只是一个开始-我使用rubicode.com/Software/RCDefaultApp将自动应用程序设置为默认浏览器。在Automator中,有一个“复制到剪贴板”操作。我只是无法将任何文本输入到Automator应用程序中。
penguinrob

同上,但我使用了Choosy。我已经进行了大量测试,发现以下内容:1)Automator应用程序确实运行。2)似乎根本没有任何输入。3)因此,向浏览器发送“链接”时,不会向其发送纯文本URL。这必须以不同的方式处理,这才是真正的问题所在。
Timothy Mueller-Harder

Answers:


13

在Mac OS X中打开URL的方式实际上比您想象的要复杂。当您单击一个URL时,Mac OS X不仅将浏览器的URL传递给浏览器,而且还向浏览器发送URL。而是向它发送一个Apple事件,其ID为kAEGetURL,其中包含URL。

我从未真正使用过Automator(对于我的典型用途来说速度太慢且受限制),因此我不确定,但是我怀疑它是否具有处理Apple Events的能力。因此,您将无法使用Automator实现所需的功能。

因此,您必须使用Xcode中的常规Objective-C应用程序。

您需要做的两件事是:

  1. 注册您的应用程序以接收kAEGetURL事件,然后CFBundleURLTypes在应用程序的Info.plist 中将设置为包括httphttps

  2. 实现处理kAEGetURL事件的方法,并使它将URL复制到剪贴板。

这两件事在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:方法中完成)。

如果您感到懒惰,只是想看看它能起作用,请抓取此文件,从中提取应用程序,将其设置为默认Web浏览器(打开Safari首选项,然后在“默认Web浏览器”字段中浏览该应用程序)。然后在Skype中单击您的链接,该链接应直接复制到剪贴板。


谢谢您的回答。我不知道在OSX中如何处理URL。我看了一下您的代码,但是我不太了解Objective-C。但是,您得到的应用程序就像一个魅力,这正是我从一开始就想要的。再次感谢!
DjDCH'4

在应用程式上做得不错(让)。我很乐意提供赏金,但是我想知道是否可以(或不能)强迫Automator确认kAEGetURL事件来执行此操作,因此我缺少一些明确的信息。
kopischke 2012年

@kopischke:我只是在Automator帮助中搜索有关Apple事件的任何提及,但没有发现任何问题。我认为可以假设Automator不支持此功能。
houbysoft 2012年

使用AppleScript可以做到这一点,这是扩展Automator工作流程的“逻辑”方式,而无需研究XCode / ObjC和编译自己的应用程序。(不是那么复杂,但是AppleScript可能会更容易。)
ocodo 2015年

这似乎不适用于10.11。“ / Applications / Copy URL to Clipboard.app不能作为HTTP浏览器使用”
TJ Luoma 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.