如何捕获URL打开事件?

时间:2015-01-12 07:44:40

标签: c# vb.net

我已经在谷歌搜索过URL开放事件很长一段时间了,但Google只是给了我不恰当的结果......

实际上,我想知道当应用程序打开外部URL时会发生什么。

例如,当有人通过Skype向您发送链接时,您单击该链接,Skype将提示您进入IE / Chrome或其他默认浏览器。我想知道如何捕获打开浏览器的事件。我不想将我的应用程序设置为默认浏览器。

VB.net可能有一个有限的功能,如果没有办法实现这一点,可以给我一个如何在C#或c ++中实现它的方法。

我完全不知道如何做到这一点。希望有人能给我一个提示:(


添加: 也许我的问题不明确。我需要做的是不打开URL。 我想创建一个应用程序来通过我的应用程序打开一个URL。例如,当我点击Skype上的链接时。我希望我的应用程序获取Skype试图打开的链接而不是将我带到浏览器。

1 个答案:

答案 0 :(得分:3)

从评论中看来真正的问题是"我如何让我的应用程序处理URL调用而不是注册的应用程序"?

您可以通过注册自己的protocol handler来实现。 Windows通过在...注册表中注册的协议处理程序处理URI。每次在Run框中输入URL或由Process.Start启动时,操作系统都会检查注册表以查找为URI协议注册的程序。操作系统将只运行注册过程,将URL作为参数传递

您可以替换http处理程序,但您应该非常小心,否则可能会给最终用户带来严重问题

  • 您需要保留旧值并在删除应用程序时还原它们
  • 安装新浏览器或更改默认浏览器也会影响处理程序。这将破坏您的处理程序。您可能需要定期检查修改。
  • 如果您劫持所有网址,导致浏览延迟和显示您的用户界面,用户将非常高兴。如果你不想自己处理它,你的程序应该非常轻,并将URL转发给前一个处理程序(即浏览器)。

当然,如果您要拦截网址来电的原因是提供您自己的前缀(例如git:),那么您不必担心任何此类问题。