У меня возникла небольшая проблема с ссылкой mailto на ярлыке.Отказоустойчивость, когда обработчик протокола mailto отсутствует
Фактически я добавил ярлык, который содержит ссылку mailto, и на собственном пути программа попытается открыть его с помощью программы по умолчанию, которую пользователь определил.
Но на самом деле это не сработает и поднять Win32Exception
, когда по умолчанию для этого протокола нет.
Так что заставить его открыть браузер, но он не работает, либо ...
Вот пример моего кода:
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
// Specify that the link was visited.
this.linkLabelContactEmail.LinkVisited = true;
try
{
// Open the default program to send an email.
System.Diagnostics.Process.Start("mailto:[email protected]");
}
catch (Win32Exception)
{
// Force opening in a browser
System.Diagnostics.Process.Start("http://mailto:[email protected]");
}
}
Но это не работает:/(он работает, если программа по умолчанию связана с этим протоколом)
Кто-нибудь знает, как я могу исправить эту проблему? Как заставить добавить протокол по умолчанию для ссылки mailto?
EDIT:
Я попытался это, который работал отлично! Но он по-прежнему не обрабатывает браузер linux:/Кроме того, он не работает .exe под Unix OS, как мне попробовать? (Я знаю, что светлячок является установка по умолчанию, он будет обрабатывать?)
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
// Specify that the link was visited.
this.linkLabelContactEmail.LinkVisited = true;
try
{
// Open the default program to send an email.
System.Diagnostics.Process.Start("mailto:[email protected]");
}
catch (Win32Exception)
{
try
{
// Force opening in Firefox
System.Diagnostics.Process.Start("firefox", "mailto:[email protected]");
}
catch (Win32Exception)
{
try
{
// Force opening in IE
System.Diagnostics.Process.Start("chrome", "mailto:[email protected]");
}
catch (Win32Exception)
{
try
{
// Force opening in IE
System.Diagnostics.Process.Start("iexplore", "mailto:[email protected]");
}
catch (Win32Exception)
{
MessageBox.Show(
"Vous n'avez aucun programme par défaut de configuré pour envoyer un mail, ni aucun des 3 navigateurs (Firefox, Chrome, Internet Explorer). Nous ne pouvons donc vous aidez à envoyer ce mail...",
"Erreur à l'envoi du mail",
MessageBoxButtons.OK,
MessageBoxIcon.Warning,
MessageBoxDefaultButton.Button1
);
}
}
}
}
}
@Fik: нужна помощь? Если нет, примите, пожалуйста, ответ, если он был вам полезен. –
Спасибо! Как я могу справиться с этим, если я работаю под ОС Linux? Или если пользователь удаляет IE? Как я могу назвать Firefox или Chrome? Или Linux-браузер? – Fikkwix
Он работает с firefox, я полагаю, он будет работать с IE, как вы отвечаете, я надеюсь, что он будет работать с Chrome, потому что он запускается, когда я пытаюсь запустить Chrome через Commande Prompt. – Fikkwix