Pergunta

Como faço para que isso aconteça mailto: links serão registrados no meu programa?

Como eu lidaria com esse evento em meu programa?

A maioria das soluções que encontrei em uma pesquisa rápida no Google são como fazer isso manualmente, mas preciso fazer isso automaticamente para os usuários do meu programa se eles clicarem em um botão, como "definir como cliente de e-mail padrão".

Editar:

Removida a referência ao Delphi, porque a resposta é independente do seu idioma.

Foi útil?

Solução

@Dillie-O:Sua resposta me colocou na direção certa (eu deveria ter esperado que fosse apenas uma alteração no registro) e fiz isso funcionar.Mas vou marcar isso como resposta porque colocarei algumas informações adicionais que encontrei enquanto trabalhava nisso.

A solução para esta questão realmente não importa qual linguagem de programação você está usando, desde que haja alguma maneira de modificar as configurações de registro do Windows.

Finalmente, aqui está a resposta:

  • Para associar um programa ao protocolo mailto para todos os usuários em um computador, altere o valor padrão de HKEY_CLASSES_ROOT\mailto\shell\open\command para:
    "O executável do seu programa" "%1"
  • Para associar um programa ao protocolo mailto para o usuário atual, altere o valor padrão de HKEY_CURRENT_USER\Software\Classes\mailto\shell\open\command para:
    "O executável do seu programa" "%1"

O% 1 será substituído pelo URL mailto inteiro.Por exemplo, dado o link:

<a href="mailto:user@example.com">Email me</a>

O seguinte será executado:
"O executável do seu programa" "mailto:usuário@exemplo.com"

Atualização (via comentário do shellscape):
A partir do Windows 8, esse método não funciona mais conforme o esperado.Win8 impõe a seguinte chave:HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associati‌​ons\URLAssociations\‌​MAILTO\UserChoice para o qual o ProgID do aplicativo selecionado está com hash e não pode ser falsificado.É uma PITA real

Outras dicas

Pelo que vi, existem algumas chaves de registro que definem o cliente de email padrão.Um deles sendo:

Chave do sistema: [HKEY_CLASSES_ROOT\mailto\shell\open\command]

Nome do valor: (Default)

Tipo de dados: REG_SZ (Valor da sequência)

Dados de valor: Mail program command-line.

Eu não estou familiarizado com Delphi 7, mas tenho certeza de que há alguns bibliotecas de edição de registro lá que você pode usar para modificar esse valor.

Alguns lugares listam mais do que isso chave, outros apenas esta chave, então você pode precisar testar um pouco para encontrar a(s) adequada(s).

Aqui está a solução oficial da Microsoft para alterar programaticamente o cliente de email padrão.É Visual Basic, mas espero que o conceito fique claro com isso:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top