Подтвердить что ты не робот

Как веб-сайт Apple iTunes запускает приложение iTunes на моем компьютере, когда я нажимаю синюю кнопку "Запустить iTunes"?

Это новое для меня как разработчик настольных систем.

Если бы я мог понять, как это делается, это может иметь значение для некоторых исследований, которые я делаю, в частности, как переносить толстые настольные приложения в веб-реализацию.

Чем больше форм-ориентированная и легкая графика я могу понять, но и тяжелая 3D-графика по-прежнему требует неформального приложения.

Как я могу определить, iTunes устанавливает на моей машине какой-то новый обработчик протокола, соответствующий "itms" вместо "http".

Это круто и загадочно для меня, почти волшебное. Любая помощь или предложения по дополнительным материалам и/или ресурсам для чтения будут приветствоваться.

4b9b3361

Ответ 1

Вы можете зарегистрировать "обработчики протоколов" с некоторыми браузерами. Я думаю, там есть место в операционной системе, где вы можете зарегистрироваться самостоятельно.

См

Создание новых в firefox: http://ajaxian.com/archives/creating-custom-protocol-handlers-with-html-5-and-firefox

В сафари: http://discussions.apple.com/thread.jspa?threadID=1280989

Специальные "обработчики мобильных протоколов" широко используются в iPhone/iPod для запуска телефонного дозвона, отправки электронной почты, карт Google и т.д. http://www.iphonedevfaq.com/index.php?title=Protocols

Здесь пример того, как перенастроить обработчик протокола mailto:, чтобы вызвать gmail, а не внешний почтовый клиент: http://lifehacker.com/392287/set-firefox-3-to-launch-gmail-for-mailto-links

Ответ 2

Simple.

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

В большинстве приложений сейчас есть "пользовательские схемы URL", Например: Coda (http://panic.com/coda), вы можете добавить фрагменты кода через:

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

Ответ 3

В Windows это называется обработчиком подключаемого протокола. В этой статье о CodeProject показано, как реализовать подключаемый обработчик протокола в Windows.

Обратите внимание, что это больше связано с регистрацией нового протокола в реестре, например myprotocol://и при запуске конкретного exe всякий раз, когда нажимается myprotocol://anchor.

Фактически это позволяет вашему приложению получать и обрабатывать запрос и динамически создавать данные ответа. Если ваш протокол также будет называться программно, это обычно важно.

Это может быть излишним для вашей ситуации, но это удобно знать.

Ответ 4

Самый простой способ - зарегистрировать тип файла в вашем приложении (также называемый File Association), например ".myp", и когда пользователь нажимает "start myapp" на сайте, он загружает файл "startapp.myp".

Затем Windows просмотрит расширение файла и обнаружит, что оно зарегистрировано в вашем приложении и запустило ваше приложение с файлом в качестве параметра команды. Затем ваше приложение может читать файл и делать материал в зависимости от его содержимого.

Вот код для регистрации filetype для вашего приложения, сделанного в 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

Ответ 5

Просто последующие действия для тех, кто ответил.

Оказывается, что ситуация несколько сложная. Хотя примерно: 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

Теперь он работает!

Спасибо за все ответы.