Как сделать так, чтобы ссылки mailto: регистрировались в моей программе?
Как бы я тогда обработал это событие в своей программе?
Большинство решений, которые я нашел при быстром поиске в Google, касаются того, как сделать это вручную, но мне нужно делать это автоматически для пользователей моей программы, если они нажимают кнопку, например «установить как почтовый клиент по умолчанию».
Удалена ссылка на Delphi, потому что ответ не зависит от вашего языка.
Вот официальное решение Microsoft для программного изменения почтового клиента по умолчанию. Это Visual Basic, но я надеюсь, что концепция понятна из этого: http://support.microsoft.com/kb/299853
Из вашей ссылки: «Он отличается от стандартного веб-браузера или почтового клиента, который используется для запуска произвольных URL-адресов из любой точки системы». Это еще одна вещь, которая меня интересовала, но на самом деле это не ответ на этот вопрос.





Из того, что я видел, есть несколько ключей реестра, которые устанавливают почтовый клиент по умолчанию. Один из них является:
Системный ключ: [HKEY_CLASSES_ROOT\mailto\shell\open\command]
Имя значения: (Default)
Тип данных: REG_SZ (строковое значение)
Данные значения: Mail program command-line.
Я не знаком с Delphi 7, но уверен, что там есть некоторые библиотеки редактирования реестра, которые вы могли бы использовать для изменения этого значения.
В некоторых местах указано больше, чем этот ключ, в других - только этот ключ, поэтому вам может потребоваться немного протестировать, чтобы найти правильный (-ые).
@ Dillie-O: Ваш ответ направил меня в правильном направлении (я ожидал, что это просто изменение реестра), и у меня все заработало. Но я собираюсь отметить это как ответ, потому что я собираюсь добавить некоторую дополнительную информацию, которую я нашел во время работы над этим.
Решение этого вопроса действительно не зависит от того, какой язык программирования вы используете, если есть способ изменить настройки реестра Windows.
Наконец, вот ответ:
% 1 будет заменен на весь URL mailto. Например, по ссылке:
<a href = "mailto:[email protected]">Email me</a>
Будет выполнено следующее:
"Исполняемый файл вашей программы" "mailto: [email protected]"
Обновление (через комментарий оболочки):
В Windows 8 этот метод больше не работает должным образом. Win8 применяет следующий ключ: HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ Associati ons \ URLAssociations \ MAILTO \ UserChoice, для которого ProgID выбранного приложения хешируется и не может быть подделан. Это королевская ПИТА.
Вы проверили, можно ли теперь пометить это как ответ то? Я не знаю, какой минимум репутации требуется.
В Windows 8 этот метод больше не работает должным образом. Win8 применяет следующий ключ: HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ Associati ons \ URLAssociations \ MAILTO \ UserChoice, для которого ProgID выбранного приложения хешируется и не может быть подделан. Это королевская ПИТА
Обратите внимание, что ссылка на статью Microsoft kb больше не действительна, поскольку Microsoft сочла целесообразным удалить ее и никогда не разрешала архивирование на машине возврата. Пока кто-нибудь не предоставит информацию, обратитесь к этому отличному обсуждению: superuser.com/questions/1045349/…