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

时间:2010-05-10 02:57:38

标签: html

我正在通过C#生成一个HTML报告来打印一个包含3列的表中的文件对:前两列用于文件名,第三列是超链接比较 - 我希望此链接运行WinMerge到比较两个文件,我目前不知道该怎么做。

5 个答案:

答案 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文件。这是怎么回事

  1. 在记事本中创建文件
  2. 编写脚本:启动wmplayer“\ dotnet \ sc \ 1234.mp4”/ fullscreen
  3. 另存为:\ dotnet \ sc \ test.bat
  4. 中的test.bat

    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>

结果:

enter image description here