2008-08-01 3 views
30

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

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

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

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

ответ

18

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

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

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

  • Чтобы связать программу с протоколом MailTo для всех пользователей на компьютере, изменить HKEY_CLASSES_ROOT \ MAILTO \ Shell \ открытой команду \ Значение по умолчанию для:
    "вашей программа исполняемого" "% 1"
  • для associate a program with the mailto protocol for the current user, измените HKEY_CURRENT_USER \ Software \ Classes \ MAILTO \ Shell \ открытую команду \ значение по умолчанию для:
    "Исполняемый файл вашей программы ""% 1 "

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

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

Ниже будет выполняться:
"Вашей программа исполняемого" "электронная почта: [email protected]"

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

+0

Вы проверили, можете ли вы отметить это как * * ответ? Я не знаю, какая минимальная репутация требуется. – tzot 2010-06-30 21:55:49

12

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

System Key: [HKEY_CLASSES_ROOT\mailto\shell\open\command]

Значение Название: (Default)

Тип данных: REG_SZ (String Value)

Значение: Mail program command-line.

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

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

4

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

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

+0

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