我正在尝试构建一个C#windows应用程序,我需要发送一个指向用户电子邮件地址的链接。单击链接时,应启动Windows窗体。
我尝试使用下面的超链接代码,但我收到错误
string body = "<a> href ="Application.Run(new form1());" > click here </a>
我是C#的新手,请通过点击超链接让我知道如何运行应用程序。
提前感谢您的帮助!
答案 0 :(得分:0)
您将无法完成您想要完成的任务,因为这将严重违反安全规定。试想一下有人发送一个启动CMD的超链接并删除磁盘上的文件。
有一个无法违反的沙箱,就像在浏览器中无法访问客户端PC的特定部分一样。 此外,您要完成的任务不仅仅是Outlook问题。如果您发送电子邮件并且某人打开了网络邮件,则您的功能也应该在其他邮件客户端上有效。
对不起。不可能。
答案 1 :(得分:0)
您无法将C#代码注入电子邮件模板并期望它能够正常运行。电子邮件模板纯粹是HTML,而不是IDE或.NET环境 考虑到您的Windows窗体应用程序已安装在用户计算机上,假设 MyApp.exe ,可以执行以下操作。
创建一个API服务,让您启动该过程:
public class MyApplicationController : ApiController
{
[HttpGet]
public bool Launch()
{
System.Diagnostics.Process.Start("MyApp.exe");
return true;
}
}
将托管API服务的网址作为指向您电子邮件正文的链接。
虽然还没有测试过,但代码应该可以运行。
答案 2 :(得分:0)
有可能。 您需要将应用程序注册到URI方案。
MSDN声明:
要注册应用程序以处理特定URI方案,请将新密钥以及相应的子键和值添加到HKEY_CLASSES_ROOT。根密钥必须与要添加的URI方案匹配。例如,要添加“alert:”方案,请将警报密钥添加到HKEY_CLASSES_ROOT,如下所示:
HKEY_CLASSES_ROOT
alert
URL Protocol = ""
在此新密钥下,URL协议字符串值指示此密钥声明了自定义可插入协议处理程序。如果没有此密钥,处理程序应用程序将无法启动。该值应为空字符串。 还应为DefaultIcon和shell添加键。 DefaultIcon键的Default字符串值必须是用作此新URI方案的图标的文件名。该字符串采用“path,iconindex”形式,最大长度为MAX_PATH。 shell键下第一个键的名称应该是动作动词,例如open。在此键下,命令键或DDEEXEC键指示应如何调用处理程序。命令和DDEEXEC键下的值描述了如何启动处理新协议的应用程序。 最后,Default字符串值应包含新URI方案的显示名称。
以下示例显示如何注册应用程序,在这种情况下为alert.exe,以处理警报方案。
HKEY_CLASSES_ROOT
alert
(Default) = "URL:Alert Protocol"
URL Protocol = ""
DefaultIcon
(Default) = "alert.exe,1"
shell
open
command
(Default) = "C:\Program Files\Alert\alert.exe" "%1"
当用户单击包含您的自定义URI方案的链接时,Windows Internet Explorer将启动为该URI方案注册的可插入协议处理程序。如果注册表中指定的指定open命令包含%1参数,则Internet Explorer会将URI传递给已注册的可插入协议处理程序应用程序。
MSDN:Registering an Application to a URI Scheme
StackOverflow:how do I create my own URL protocol?