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

StackOverflow https://stackoverflow.com/questions/231

  •  08-06-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

Решение этого вопроса на самом деле не имеет значения, какой язык программирования вы используете, если есть какой-то способ изменить настройки реестра 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:user@example.com">Email me</a>

Будет выполнено следующее:
"Исполняемый файл вашей программы" "mailto:user@example.com "

Обновление (через комментарий shellscape):
Начиная с Windows 8, этот метод больше не работает должным образом.Win8 применяет следующий ключ:HKEY_CURRENT_USER\Программное обеспечение\ Microsoft\ Windows\ Оболочка\ Ассоциации\ URLAssociations\MAILTO\ Пользовательский выбор, для которого ProgID выбранного приложения хэширован и не может быть подделан.Это королевский ЛАВАШ

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top