Registre el programa de Windows con el protocolo mailto mediante programación

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

  •  08-06-2019
  •  | 
  •  

Pregunta

¿Cómo lo hago así? mailto: ¿Se registrarán los enlaces con mi programa?

¿Cómo manejaría entonces ese evento en mi programa?

La mayoría de las soluciones que encontré en una búsqueda rápida en Google son cómo hacer esto manualmente, pero necesito hacerlo automáticamente para los usuarios de mi programa si hacen clic en un botón, como "establecer como cliente de correo electrónico predeterminado".

Editar:

Se eliminó la referencia a Delphi, porque la respuesta es independiente de su idioma.

¿Fue útil?

Solución

@Dillie-O:Su respuesta me puso en la dirección correcta (debería haber esperado que fuera solo un cambio de registro) y logré que esto funcionara.Pero voy a marcar esto como la respuesta porque voy a poner información adicional que encontré mientras trabajaba en esto.

La solución a esta pregunta realmente no importa qué lenguaje de programación esté utilizando, siempre que haya alguna forma de modificar la configuración del registro de Windows.

Finalmente, aquí está la respuesta:

  • Para asociar un programa con el protocolo mailto para todos los usuarios en una computadora, cambie el valor predeterminado de HKEY_CLASSES_ROOT\mailto\shell\open\command a:
    "El ejecutable de tu programa." "%1"
  • A asociar un programa con el protocolo mailto para el usuario actual, cambie el valor predeterminado de HKEY_CURRENT_USER\Software\Classes\mailto\shell\open\command a:
    "El ejecutable de tu programa." "%1"

El %1 será reemplazado por la URL de correo completa.Por ejemplo, dado el enlace:

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

Se ejecutará lo siguiente:
"El ejecutable de tu programa." "correo a:usuario@ejemplo.com"

Actualización (a través de comentario de shellscape):
A partir de Windows 8, este método ya no funciona como se esperaba.Win8 aplica la siguiente clave:HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associati‌​ons\URLAssociations\‌​MAILTO\UserChoice para el cual el ProgID de la aplicación seleccionada tiene un hash y no se puede falsificar.Es un PITA real

Otros consejos

Por lo que he visto, hay algunas claves de registro que configuran el cliente de correo predeterminado.Uno de ellos es:

Clave del sistema: [HKEY_CLASSES_ROOT\mailto\shell\open\command]

Nombre del valor: (Default)

Tipo de datos: REG_SZ (Valor de cadena)

Datos de valor: Mail program command-line.

no estoy familiarizado con Delphi 7, pero estoy seguro de que hay algunos bibliotecas de edición de registro allí que podría utilizar para modificar este valor.

Algunos lugares enumeran más que esto llave, otros solo esta clave, por lo que es posible que tengas que probar un poco para encontrar la(s) adecuada(s).

Aquí está la solución oficial de Microsoft para cambiar mediante programación el cliente de correo predeterminado.Es Visual Basic, pero espero que el concepto quede claro a partir de esto:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top