2008-08-01 6 views
30

Wie mache ich es so mailto: Links werden mit meinem Programm registriert werden?Registrieren Sie Windows-Programm mit dem mailto-Protokoll programmgesteuert

Wie würde ich dann dieses Ereignis in meinem Programm behandeln?

Die meisten Lösungen, die ich durch eine schnelle Google-Suche gefunden habe, sind manuelle Schritte, aber ich muss dies automatisch für Benutzer meines Programms tun, wenn sie auf eine Schaltfläche wie "Als Standard-E-Mail-Client festlegen" klicken.

Bearbeiten: Verweis auf Delphi entfernt, da die Antwort unabhängig von Ihrer Sprache ist.

Antwort

18

@ Dillie-O: Ihre Antwort mich in der richtigen Richtung gesetzt (ich erwartet hätte es nur eine Änderung der Registrierung sein) und ich habe das funktioniert. Aber ich werde dies als die Antwort markieren, weil ich einige zusätzliche Informationen hinzufügen werde, die ich während meiner Arbeit gefunden habe.

Die Lösung für diese Frage ist wirklich egal, welche Programmiersprache Sie verwenden, solange es eine Möglichkeit gibt, Windows-Registrierungseinstellungen zu ändern.

Schließlich, hier ist die Antwort:

  • Um alle Benutzer auf einem Computer ein Programm mit dem mailto Protokoll zu verknüpfen, die HKEY_CLASSES_ROOT ändern \ mailto \ shell \ open \ command Standardwert zu:
    "Ihr Programm ausführbares" "% 1"
  • um associate a program with the mailto protocol for the current user, den HKEY_CURRENT_USER \ Software \ Classes ändern \ mailto \ shell \ open \ command Standardwert zu:
    "Die ausführbare Datei Ihres Programms ""% 1 "

Die% 1 wird durch die gesamte mailto-URL ersetzt.Zum Beispiel, angesichts der Link:

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

Im Folgenden wird ausgeführt:
"Ihr Programm ausführbare" "mailto: [email protected]"

Update (via Kommentar von shellscape):
Ab Windows 8 funktioniert diese Methode nicht mehr wie erwartet. Win8 erzwingt den folgenden Schlüssel: HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ Assoziationen \ URLAssociations \ MAILTO \ UserChoice, für die die ProgID der ausgewählten App Hashed und nicht gefälscht werden kann. Es ist eine königliche PITA

+0

Haben Sie überprüft, ob Sie dies jetzt als * die * Antwort markieren können? Ich kenne nicht die erforderliche Mindestpersönlichkeit. – tzot

+0

Ja, ich konnte dies jetzt als Antwort markieren. –

+1

Ab Windows 8 funktioniert diese Methode nicht mehr wie erwartet. Win8 erzwingt den folgenden Schlüssel: HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ Assoziationen \ URLAssociations \ MAILTO \ UserChoice, für die die ProgID der ausgewählten App Hashed und nicht gefälscht werden kann. Es ist eine königliche PITA – shellscape

12

Von dem, was ich gesehen habe, gibt es ein paar Registrierungsschlüssel, die den Standard-Mail-Client festlegen. Einer von ihnen ist:

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

Wertname: (Default)

Datentyp: REG_SZ (String Value)

Wert: Mail program command-line.

Ich bin nicht vertraut mit Delphi 7, aber ich bin sicher, es gibt einige Registry-Bearbeitungsbibliotheken in dort, die Sie verwenden könnten, um diesen Wert zu ändern.

Einige Orte Liste mehr als diese Schlüssel, andere nur diesen Schlüssel, so müssen Sie möglicherweise ein wenig zu testen, um die richtige (n) zu finden.

4

Hier ist die offizielle Microsoft-Lösung, um den Standard-E-Mail-Client programmgesteuert zu ändern. Es ist Visual Basic, aber ich hoffe, dass das Konzept aus, das ist klar:

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

+0

Von Ihrem Link: "Dies ist getrennt von der Standard-Web-Browser oder E-Mail-Client, der zum Starten beliebiger URLs von irgendwo im System verwendet wird." Das ist auch eine andere Sache, die ich mich gefragt habe, aber nicht wirklich die Antwort auf diese Frage. –

Verwandte Themen