如何使用超链接运行外部程序,例如记事本?

我通过C#生成一个HTML报告,在一个有3列的表格中打印文件对:前两列用于文件名,第三列是超链接比较 – 我想要这个链接运行WinMerge比较两文件,我目前不知道该怎么做。

尝试这个

<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> 

对不起,这个答案很糟糕,但是你不能通过点击来启动任何外部应用程序,因为这将是一个严重的安全问题,这个function在HTML或javascript中不可用。 想想用args启动cmd.exe …你想用参数启动WinMerge,但是你可以看到任何东西都可以引入安全问题。

唯一可能的可能的例外,我能想到的将是一个协议处理程序(因为这些是明确定义的处理程序),如winmerge:// ,虽然传递2个文件参数我不确定,如果它是一个选项值得研究,但我不确定你是不是该做的或不允许做的客户,所以这可能是一个非起动的解决scheme。

如何从HTML启动应用程序的合理方式是通过urlscheme。 因此,您可以通过mailto:链接和irc通过irc:链接启动电子邮件。 单独的应用程序可以实现这些scheme,但我不确定WinMerge这样做。

创build一个batch file并在Window.open中调用bacth文件。 这里是如何工作的

  1. 在记事本中创build一个文件
  2. 编写你的脚本:启动wmplayer“\ dotnet \ sc \ 1234.mp4”/全屏
  3. 另存为:\ dotnet \ sc \ test.bat中的test.bat

在HTML中

window.open( '文件://dotnet/sc/test.bat')

请享用..