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

Зарегистрировать программу Windows с программным обеспечением mailto

Как мне сделать так, чтобы mailto: ссылки были зарегистрированы в моей программе?

Как мне обработать это событие в моей программе?

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

Изменить. Удалена ссылка на Delphi, потому что ответ не зависит от вашего языка.

4b9b3361

Ответ 1

@Dillie-O: Ваш ответ поставил меня в правильном направлении (я должен был ожидать, что это просто изменение реестра), и я получил эту работу. Но я собираюсь отметить это как ответ, потому что я собираюсь добавить дополнительную информацию, которую я нашел, работая над этим.

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

Наконец, вот ответ:

  • Чтобы связать программу с протоколом mailto для всех пользователей на компьютере, измените значение HKEY_CLASSES_ROOT\mailto\shell\open\command Значение по умолчанию: "Исполняемый файл программы" "% 1"
  • Чтобы связать программу с протоколом mailto для текущего пользователя, измените HKEY_CURRENT_USER\Software\Classes\mailto\shell\open\command Значение по умолчанию: "Исполняемый файл программы" "% 1"

% 1 будет заменено всем URL-адресом mailto. Например, с учетом ссылки:

<a href="mailto:[email protected]">Email me</a>

Будут выполнены следующие действия:
"Ваша исполняемая программа" "mailto: [email protected]"

Обновление (через комментарий от shellscape):
Начиная с Windows 8 этот метод больше не работает так, как ожидалось. Win8 применяет следующий ключ: HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associati ons\URLAssociations\MAILTO\UserChoice, для которого ProgID выбранного приложения хэширован и не может быть подделан. Это королевская PITA

Ответ 2

Из того, что я видел, есть несколько разделов реестра, которые устанавливают почтовый клиент по умолчанию. Один из них:

Ключ системы: [HKEY_CLASSES_ROOT\mailto\shell\open\command]

Имя значения: (Default)

Тип данных: REG_SZ (Строковое значение)

Данные значения: Mail program command-line.

Я не знаком с Delphi 7, но я уверен, что есть некоторые библиотеки редактирования реестра, которые вы можете использовать для изменения этого значения.

В некоторых местах список больше, чем этот ключ, другие - только этот ключ, поэтому вам может понадобиться немного проверить, чтобы найти подходящий (-ы).

Ответ 3

Вот официальное решение Microsoft для программного изменения почтового клиента по умолчанию. Это Visual Basic, но я надеюсь, что концепция понятна из этого:

http://support.microsoft.com/kb/299853