打开应用程序并从电子邮件中的超链接传递参数
Posted
技术标签:
【中文标题】打开应用程序并从电子邮件中的超链接传递参数【英文标题】:Open application and pass arguments from hyper-link in email 【发布时间】:2014-03-05 14:45:13 【问题描述】:这一切都是在内部通过受信任/完全访问权限完成的。
如何从电子邮件中的超链接打开我的应用程序并传递参数?
我知道我可以设置文件/链接类型关联(尽管我不确定如何以编程方式或在安装期间执行此操作)。这是最好的方法和/或我将如何设置它?
我可以在打开应用程序时传递参数(虽然这样做似乎有点笨拙)但是当应用程序已经打开时这将不起作用(仅限单个实例),这很可能总是案例。
我已经看到一些使用 javascript / ActiveX 完成的东西,但由于这些链接总是在 Outlook 的电子邮件中,我不认为这种方法会起作用。
所有机器都使用 Windows 7 和 .Net 4.1
【问题讨论】:
此应用程序是否安装在服务器中? ,这个应用程序是做什么的?? @AmarnathRShenoy 这是一个桌面 LOB 应用程序,我的想法是使用自动电子邮件警报中的链接来打开报告或链接到客户帐户。 我尝试了很多不同的组合,但似乎没有任何效果,我可以让它工作的唯一方法是使用已经设置的参数创建应用程序的快捷方式,然后超链接到这些快捷方式,而不是直接到应用程序。 【参考方案1】:查看控制面板项“默认程序”,然后“设置关联”(“使文件类型或协议(例如 .mp3 或 http://)始终在特定程序中打开” )
这些是通过注册表项设置的(可以通过安装程序完成)。您将通过整个 url 作为您的第一个参数,因此您需要将其分开。
查看文档:
http://msdn.microsoft.com/en-us/library/ie/aa767914(v=vs.85).aspx
有注册表项的例子和一个简单的演示程序。
作为参考,注册表项的结构如下:
HKEY_CLASSES_ROOT
myapp
(Default) = "URL:MyApp Protocol"
URL Protocol = ""
DefaultIcon
(Default) = "myapp.exe,1"
shell
open
command
(Default) = "C:\Program Files\WunderWurks\myapp.exe" "%1"
设置完成后,您可以向应用添加普通的 html 链接,例如 <a href="myapp:one_two_three">Click here</a>
您的应用程序将被称为 myapp.exe one_two_three
【讨论】:
谢谢你,至少现在我知道如何在安装时进行设置 - 我担心如果它已经打开,它会尝试启动另一个应用程序实例? 是的,它会的。在这种情况下,您需要在应用程序中处理它。见(***.com/questions/1207105/…)或(***.com/questions/19147/…);但是,您可能会以意想不到的方式破坏用户现有的工作流程。以使两个实例可行的方式构建程序可能会更好。 抱歉回复晚了,一直很差。我认为这是最好的方法,而不是让单个实例应用程序自己手动处理它。中断工作流程并不是一个真正的问题,因为该应用程序是基于选项卡的,因此不会丢失现有的工作,并且当用户单击链接时,我希望他们了解正在发生的事情。感谢您的帮助!。 我无法让它工作。我添加了注册表项,超链接能够打开应用程序,但它不接受参数。有没有其他人经历过这个?还是我缺少什么?【参考方案2】:通过使用 vb 脚本(如果可以的话)- 你可以使用这个代码:
<script type="text/vbscript" language="vbscript">
sub testing
Set wshShell = CreateObject ("WSCript.shell")
wshshell.run "c:\path\programName.exe arg1 arg2 .... argn"
set wshshell = nothing
end sub
</script>
【讨论】:
我不认为我可以将其用作电子邮件中的链接 - 我可以附加一个 vbs,但这很笨拙,而且我不愿意告诉人们可以打开 *.vbs附件(假设防病毒不会立即阻止它)。当应用程序已经运行时,这也不起作用,它会尝试打开另一个被禁止的实例。 关于那个 - 你是对的。这正是我写“如果你能做到”的原因。 在这种情况下您没有阅读问题:打开应用程序并从“电子邮件中的超级链接”传递参数以上是关于打开应用程序并从电子邮件中的超链接传递参数的主要内容,如果未能解决你的问题,请参考以下文章
通过 Excel/Word 中的超链接打开的选项卡无法识别会话 cookie