Registrare il programma Windows con il protocollo mailto a livello di codice

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

  •  08-06-2019
  •  | 
  •  

Domanda

Come posso farlo? mailto: i collegamenti verranno registrati con il mio programma?

Come gestirei quindi quell'evento nel mio programma?

La maggior parte delle soluzioni che ho trovato da una rapida ricerca su Google riguardano come eseguire questa operazione manualmente, ma devo farlo automaticamente per gli utenti del mio programma se fanno clic su un pulsante, ad esempio "imposta come client di posta elettronica predefinito".

Modificare:

Rimosso il riferimento a Delphi, perché la risposta è indipendente dalla tua lingua.

È stato utile?

Soluzione

@Dillie-O:La tua risposta mi ha messo nella giusta direzione (avrei dovuto aspettarmi che fosse solo una modifica del registro) e ho funzionato.Ma lo contrassegnerò come risposta perché inserirò alcune informazioni aggiuntive che ho trovato mentre lavoravo su questo.

La soluzione a questa domanda non ha importanza quale linguaggio di programmazione stai utilizzando, purché esista un modo per modificare le impostazioni del registro di Windows.

Infine, ecco la risposta:

  • Per associare un programma al protocollo mailto per tutti gli utenti su un computer, modificare il valore predefinito HKEY_CLASSES_ROOT\mailto\shell\open\command in:
    "Il tuo programma è eseguibile" "%1"
  • A associare un programma al protocollo mailto per il utente attuale, modificare il valore predefinito HKEY_CURRENT_USER\Software\Classes\mailto\shell\open\command in:
    "Il tuo programma è eseguibile" "%1"

Il %1 verrà sostituito con l'intero URL mailto.Ad esempio, dato il collegamento:

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

Verranno eseguiti:
"Il tuo programma è eseguibile" "mailto:utente@esempio.com"

Aggiornamento (tramite commento di shellscape):
A partire da Windows 8, questo metodo non funziona più come previsto.Win8 applica la seguente chiave:HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associati‌​ons\URLAssociations\‌​MAILTO\UserChoice per il quale il ProgID dell'app selezionata è sottoposto ad hashing e non può essere falsificato.È una PITA reale

Altri suggerimenti

Da quello che ho visto, ci sono alcune chiavi di registro che impostano il client di posta predefinito.Uno di questi è:

Chiave di sistema: [HKEY_CLASSES_ROOT\mailto\shell\open\command]

Nome valore: (Default)

Tipo di dati: REG_SZ (Valore stringa)

Dati valore: Mail program command-line.

Non ho familiarità con Delphi 7, ma sono sicuro che ce ne sono alcuni librerie di modifica del registro lì dentro che potresti usare per modificare questo valore.

Alcuni posti elencano più di questo chiave, altri solo questa chiave, quindi potrebbe essere necessario testare un po' per trovare quella corretta.

Ecco la soluzione Microsoft ufficiale per modificare a livello di codice il client di posta predefinito.È Visual Basic, ma spero che il concetto sia chiaro da questo:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top