我正在通过C#生成一个HTML报告来打印一个包含3列的表中的文件对:前两列用于文件名,第三列是超链接比较 - 我希望此链接运行WinMerge到比较两个文件,我目前不知道该怎么做。
答案 0 :(得分:20)
试试这个
<html>
<head>
<script type="text/javascript">
function runProgram()
{
var shell = new ActiveXObject("WScript.Shell");
var appWinMerge = "\"C:\\Program Files\\WinMerge\\WinMergeU.exe\" /e /s /u /wl /wr /maximize";
var fileLeft = "\"D:\\Path\\to\\your\\file\"";
var fileRight= "\"D:\\Path\\to\\your\\file2\"";
shell.Run(appWinMerge + " " + fileLeft + " " + fileRight);
}
</script>
</head>
<body>
<a href="javascript:runProgram()">Run program</a>
</body>
</html>
答案 1 :(得分:14)
很抱歉这个答案很糟糕,但你不能通过点击启动任何外部应用程序,因为这将是一个严重的安全问题,HTML或javascript中不提供此功能。想想刚刚用args启动cmd.exe
...你想用参数启动WinMerge,但你可以看到通过允许这个来引入安全问题。
我能想到的唯一可能可行的异常是协议处理程序(因为它们是显式定义的处理程序),如winmerge://
,尽管最好传递2个文件参数的方法我不确定,如果它是一个值得研究的选项,但我不确定你是什么或不允许对客户做什么,所以这可能是一个非首发的解决方案
答案 2 :(得分:6)
如何从HTML启动应用程序的合理方法是通过网址方案。因此,您可以通过mailto:
链接和irc通过irc:
链接发送电子邮件。个别应用程序可以实现这些方案,但我不确定WinMerge是否这样做。
答案 3 :(得分:3)
创建批处理文件并在Window.open中调用bacth文件。这是怎么回事
in html
window.open('file://dotnet/sc/test.bat')
享受..
答案 4 :(得分:2)
我写了一个小扩展名。
由于您是使用C#创建页面的,因此您可能要实现以下目的:
https://github.com/felix-d-git/DesktopAppLink
基本上,您正在创建一些注册表项来解析您在html页面中单击的链接。
然后浏览器将要求打开指定的应用程序。
C#:
DesktopAppLink.CreateLink("applink.sample", "\"<path to exe>\"", "");
HTML:
<a href="applink.sample:">Run Desktop App</a>
结果: