17

作为桌面开发人员,这对我来说是新的。

如果我能弄清楚这是如何完成的,它可能与我正在做的一些研究有关,特别是如何将厚桌面应用程序迁移到 Web 实现。

我能找到更多面向形式和轻量级的图形,但重量级的 3D 图形仍然需要某种形式的非浏览器应用程序。

据我所知,iTunes 在我的机器上安装了某种形式的新协议处理程序,对应于“itms”,而不是“http”。

这对我来说既酷又神秘,几乎是神奇的。非常欢迎任何有关其他阅读材料和/或资源的帮助或建议。

4

5 回答 5

14

您可以在某些浏览器中注册“协议处理程序”。我认为操作系统中有一个地方可以注册自己的。

在 firefox 中创建新的:http: //ajaxian.com/archives/creating-custom-protocol-handlers-with-html-5-and-firefox

在野生动物园:http ://discussions.apple.com/thread.jspa?threadID=1280989

iPhone/iPod 中广泛使用特殊的“移动协议处理程序”来启动电话拨号器、电子邮件发送、谷歌地图等... http://www.iphonedevfaq.com/index.php?title=Protocols

以下是如何重新配置mailto:​​协议处理程序以触发 gmail 而不是外部邮件客户端的示例:http: //lifehacker.com/392287/set-firefox-3-to-launch-gmail-for-mailto-links

于 2009-11-22T22:25:28.917 回答
7

简单的。

<a href="itunes:///">Open iTunes</a>

现在大多数应用程序都有“自定义 URL 方案”例如 - Coda ( http://panic.com/coda ) 您可以通过以下方式添加代码片段:

<a href="codaclips:///<<**Title:NAME**>>blabla">Add Clip</a>
于 2009-11-22T22:23:58.993 回答
1

在 Windows 中,这称为可插入协议处理程序。 CodeProject 上的这篇文章展示了如何在 Windows 上实现可插入协议处理程序。

请注意,这比在注册表中注册一个新协议(例如 myprotocol:// 并让它在单击 myprotocol:// 锚点时启动特定的 exe )更复杂。

它实际上允许您的应用程序接收和处理请求并动态创建响应数据。如果您的协议也将以编程方式调用,这通常很重要。

对于您的情况,这可能有点矫枉过正,但很容易了解。

于 2009-11-23T02:30:48.747 回答
1

最简单的方法是将文件类型注册到您的应用程序(也称为文件关联),例如“.myp”,当用户在站点上按“start myapp”时,它会下载文件“startapp.myp”。

然后,Windows 将查看文件的扩展名并发现它已注册到您的应用程序并使用该文件作为命令参数启动您的应用程序。然后,您的应用程序可以读取文件并根据其内容执行操作。

以下是在 VB.Net 中为您的应用程序注册文件类型的代码:(
示例取自http://www.developerfusion.com/article/36/file-assocation/2/,但出于持久原因,请在此处复制,查看原文发表评论的网站)

'// Registry windows api calls
Private Declare Function RegCreateKey& Lib "advapi32.DLL" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpszSubKey As String, ByVal lphKey As Long)
Private Declare Function RegSetValue& Lib "advapi32.DLL" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpszSubKey As String, ByVal fdwType As Long, ByVal lpszValue As String, ByVal dwLength As Long)
'// Required constants
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const MAX_PATH = 256&
Private Const REG_SZ = 1

'// procedure you call to associate the tmg extension with your program.
Private Sub MakeDefault()
    Dim sKeyName As String  '// Holds Key Name in registry.
    Dim sKeyValue As String  '// Holds Key Value in registry.
    Dim ret As Long    '// Holds error status if any from API calls.
    Dim lphKey As Long    '// Holds created key handle from RegCreateKey.

    '// This creates a Root entry called "TextMagic"
    sKeyName = "TextMagic" '// Application Name
    sKeyValue = "TextMagic Document" '// File Description
    ret = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey)
    ret = RegSetValue&(lphKey&, Empty, REG_SZ, sKeyValue, 0&)

    '// This creates a Root entry called .tmg associated with "TextMagic".
    sKeyName = ".tmg" '// File Extension
    sKeyValue = "TextMagic" '// Application Name
    ret = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey)

    ret = RegSetValue&(lphKey, Empty, REG_SZ, sKeyValue, 0&)

    '//This sets the command line for "TextMagic".
    sKeyName = "TextMagic" '// Application Name
    If Right$(App.Path, 1) = "\" Then
        sKeyValue = App.Path & App.EXEName & ".exe %1" '// Application Path
    Else
        sKeyValue = App.Path & "\" & App.EXEName & ".exe %1" '// Application Path
    End If
    ret = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey)
    ret = RegSetValue&(lphKey, "shell\open\command", REG_SZ, sKeyValue, MAX_PATH)
End Sub

Private Sub Form_Load()
    '// ensure we only register once. When debugging etc, remove the SaveSetting line, so your program will
    '// always attempt to register the file extension
    If GetSetting(App.Title, "Settings", "RegisteredFile", 0) = 0 Then
        '// associate tmg extension with this app
        MakeDefault()
        SaveSetting(App.Title, "Settings", "RegisteredFile", 1)
    End If
   '// check command line argument:
    If Command$ <> Empty Then
        '// we have a file to open
        '// Fetch the file name from Command$ and then read the file if needed.
    End If

End Sub
于 2011-09-29T08:29:38.630 回答
0

只是对那些回答的人的跟进。

事实证明,情况有些复杂。虽然 about:config 可用于 FireFox,但输入适当的条目是行不通的。

此链接: http: //support.mozilla.com/tiki-view_forum_thread.php ?locale=fr&forumId=1&comments_parentId=74068描述了 Linux 的问题,但我可以验证在 Windows 下也会出现同样的问题。

为了在 Windows 下进行这项工作,我必须根据以下链接创建一个包含适当信息的 .REG 文件:http: //kb.mozillazine.org/Register_protocol#Windows

现在它起作用了!

感谢所有的回复。

于 2009-11-23T03:48:40.510 回答