【问题标题】:Run application from browser从浏览器运行应用程序
【发布时间】:2016-04-26 19:10:51
【问题描述】:

我找不到有关此的任何信息。我确信这种类型的应用程序有一个术语,但我不知道去哪里找。这就是我决定在这里问的原因。

所以有一些网站,您将鼠标悬停在链接或按钮上,它会显示类似 application:xyz 的内容,其中 application 通常是要运行的名称应用程序,而 xyz 是参数什么的。

一个例子是所有的种子链接。如果您将鼠标悬停在其中显示的链接上
magnet:?somethingxxxxxxxxxxxx如何将我自己的自定义应用程序绑定到某个 URL?

假设我有一个名为 Musiclist 的 C# 应用程序。我想制作如下网址:musiclist:?song=hey123

当我在浏览器中单击它时,它会打开应用程序。

我真的找不到任何关于此的示例,或者我如何通过链接中的 :? 传递这些变量,因此我无法提供任何代码示例。 p>

【问题讨论】:

    标签: c# url browser web-applications launch


    【解决方案1】:

    这就是所谓的a protocol or a URI Scheme

    这是在注册表中定义的,因此您必须在其中添加正确的值:

    HKEY_CLASSES_ROOT
        <protocol>
            (Default) = "URL:<protocol name>"
            URL Protocol = ""
            DefaultIcon
                (Default) = "<path to your application>,<icon index>"
            shell
                open
                    command
                        (Default) = "<path to your application>" "%1"
    

    在您的情况下,例如:

    HKEY_CLASSES_ROOT
        musiclist
            (Default) = "URL:Music list protocol"
            URL Protocol = ""
            DefaultIcon
                (Default) = "C:\Program Files\Musiclist\musiclist.exe,0"
            shell
                open
                    command
                        (Default) = "C:\Program Files\Musiclist\musiclist.exe" "%1"
    

    冒号 (:) 之后的所有内容都将作为 (a) 命令行参数传递给您的应用程序。

    【讨论】:

    • 但是如何在 url 的末尾添加多个不同的参数呢?我如何使我的应用程序的行为有所不同?比如 ?:artist,或者 ?:songname 或者别的什么。真的可以是任何东西。是不是我的应用程序 Form_Load 中的一些代码,例如if (parameter == 'artist') { //something } else if (parameter == 'song') { //play song }
    • @TibiaPlayer :这将由您的应用程序解析。您可以使用 ? 分隔每个参数,并在您的应用程序中按此分隔。例如:musiclist:?artist=James?songname=123?group=Something.
    • 你知道这东西的c#视频吗?我试图在 youtube 上找到一些,但找不到任何称为 c# 协议或 c# uri 方案的东西
    • @TibiaPlayer:你为什么需要视频?只需将这些值添加到注册表中,剩下的就是解析命令行参数(例如,您将使用 String.Split())。 Read, write and delete from registry with C#
    • 好的,谢谢,我会努力解决的。我对 C# 很陌生,但仍在学习。这就是为什么我更喜欢他们一步一步解释事情的视频:P
    猜你喜欢
    • 2014-10-23
    • 1970-01-01
    • 2013-03-02
    • 2011-10-26
    • 2019-02-04
    • 2016-08-16
    • 2014-01-31
    • 2018-03-29
    • 1970-01-01
    相关资源
    最近更新 更多