当我点击蓝色的“启动iTunes”按钮时,Apple iTunes网站如何在我的计算机上启动iTunes应用程序?

时间:2009-11-22 22:21:25

标签: itunes

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

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

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

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

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

5 个答案:

答案 0 :(得分:14)

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

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

在safari中: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

答案 1 :(得分:7)

简单。

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

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

<a href="codaclips:///<<**Title:NAME**>>blabla">Add Clip</a>

答案 2 :(得分:1)

在Windows中,这称为可插入协议处理程序。 This article on CodeProject显示了如何在Windows上实现可插入协议处理程序。

注意,这比在注册表中注册新协议更复杂,例如myprotocol://并且只要单击myprotocol://锚点就启动它。

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

这对你的情况来说可能有点过头了,但是知道它很方便。

答案 3 :(得分:1)

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

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

答案 4 :(得分: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

现在有效!

感谢所有回复。