How do I make it so
mailto: links will be registered with my program?
How would I then handle that event in my program?
Most of the solutions I found from a quick Google search are how to do this manually, but I need to do this automatically for users of my program if they click a button, such as "set as default email client".
Edit: Removed reference to Delphi, because the answer is independent of your language.
@Dillie-O: Your answer put me in the right direction (I should have expected it to just be a registry change) and I got this working. But I'm going to mark this as the answer because I'm going to put some additional information that I found while working on this.
The solution to this question really doesn't matter what programming language you're using, as long as there's some way to modify Windows registry settings.
Finally, here's the answer:
The %1 will be replaced with the entire mailto URL. For example, given the link:
<a href="mailto:[email protected]">Email me</a>
The following will be executed:
"Your program's executable" "mailto:[email protected]"
Update (via comment by shellscape):
As of Windows 8, this method no longer works as expected. Win8 enforces the following key: HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\URLAssociations\MAILTO\UserChoice for which the ProgID of the selected app is hashed and can't be forged. It's a royal PITA
From what I've seen, there are a few registry keys that set the default mail client. One of them being:
REG_SZ (String Value)
Mail program command-line.
I'm not familar with
Delphi 7, but I'm sure there are some registry editing libraries in there that you could use to modify this value.
Some places list more than this key, others just this key, so you may need to test a little bit to find the proper one(s).
Here is the official Microsoft Solution to programmatically change the default mail client. It's Visual Basic, but I hope the concept is clear from this: