Enregistrer un programme Windows avec le protocole mailto par programmation

Translate

Comment puis-je le fairemailto:les liens seront-ils enregistrés avec mon programme?

Comment puis-je gérer cet événement dans mon programme?

La plupart des solutions que j'ai trouvées à partir d'une recherche rapide sur Google sont de savoir comment faire cela manuellement, mais je dois le faire automatiquement pour les utilisateurs de mon programme s'ils cliquent sur un bouton, tel que "définir comme client de messagerie par défaut".

Éditer:

Suppression de la référence à Delphi, car la réponse est indépendante de votre langue.

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

@ Dillie-O: Votre réponse m'a mis dans la bonne direction (j'aurais dû m'attendre à ce que ce soit juste un changement de registre) et j'ai fait fonctionner cela. Mais je vais marquer ceci comme la réponse parce que je vais mettre quelques informations supplémentaires que j'ai trouvées en travaillant là-dessus.

La solution à cette question n'a pas vraiment d'importance quel langage de programmation vous utilisez, tant qu'il existe un moyen de modifier les paramètres du registre Windows.

Enfin, voici la réponse:

  • Pour associer un programme au protocole mailto pourtous les utilisateurssur un ordinateur, modifiez la valeur par défaut de la commande HKEY_CLASSES_ROOT \ mailto \ shell \ open \ command en:
    "L'exécutable de votre programme" "%1"
  • Àassocier un programme au protocole mailto pour leutilisateur actuel, modifiez la valeur par défaut de la commande HKEY_CURRENT_USER \ Software \ Classes \ mailto \ shell \ open \ command en:
    "L'exécutable de votre programme" "%1"

Le% 1 sera remplacé par l'URL mailto complète. Par exemple, étant donné le lien:

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

Ce qui suit sera exécuté:
"L'exécutable de votre programme"" mailto: [email protected] "

Mise à jour (via un commentaire de shellscape):
À partir de Windows 8, cette méthode ne fonctionne plus comme prévu. Win8 applique la clé suivante: HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ Associati‌ ons \ URLAssociations \ ‌ MAILTO \ UserChoice pour lequel le ProgID de l'application sélectionnée est haché et ne peut pas être falsifié. C'est un PITA royal

La source
Translate

D'après ce que j'ai vu, il existe quelques clés de registre qui définissent le client de messagerie par défaut. L'un d'eux étant:

Clé système:[HKEY_CLASSES_ROOT\mailto\shell\open\command]

Nom de la valeur:(Default)

Type de données:REG_SZ(Valeur de chaîne)

Données de valeur:Mail program command-line.

Je ne suis pas familier avecDelphi 7, mais je suis sûr qu'il y en abibliothèques d'édition du registrelà-dedans que vous pourriez utiliser pour modifier cette valeur.

Certains endroits répertorient plus que celaclé, d'autres seulement cette clé, donc vous devrez peut-être tester un peu pour trouver la ou les bonnes.

La source
Translate

Voici la solution Microsoft officielle pour modifier par programme le client de messagerie par défaut. C'est Visual Basic, mais j'espère que le concept en ressort clairement:

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

La source