Зарегистрируйте программу Windows с протоколом mailto программно

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

Как бы я тогда обработал это событие в своей программе?

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

Редактировать:

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

Обратите внимание, что ссылка на статью Microsoft kb больше не действительна, поскольку Microsoft сочла целесообразным удалить ее и никогда не разрешала архивирование на машине возврата. Пока кто-нибудь не предоставит информацию, обратитесь к этому отличному обсуждению: superuser.com/questions/1045349/…

Ted Mittelstaedt 24.01.2020 04:04

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

Michael Stum 02.08.2008 02:18

Из вашей ссылки: «Он отличается от стандартного веб-браузера или почтового клиента, который используется для запуска произвольных URL-адресов из любой точки системы». Это еще одна вещь, которая меня интересовала, но на самом деле это не ответ на этот вопрос.

Liron Yahdav 01.11.2008 19:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
38
3
29 490
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Системный ключ: [HKEY_CLASSES_ROOT\mailto\shell\open\command]

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

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

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

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

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

Ответ принят как подходящий

@ 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]"

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

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

tzot 01.07.2010 01:55

В Windows 8 этот метод больше не работает должным образом. Win8 применяет следующий ключ: HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ Associati ons \ URLAssociations \ ‌ MAILTO \ UserChoice, для которого ProgID выбранного приложения хешируется и не может быть подделан. Это королевская ПИТА

shellscape 15.12.2012 22:11

Другие вопросы по теме