Как запустить внешнюю программу, например. блокнот, используя гиперссылку?

Я создаю HTML-отчет С# для печати пар файлов в таблице, которая имеет 3 столбца: первые два столбца, используемые для имен файлов, и третий столбец - это гиперссылка Compare - я хочу, чтобы эта ссылка запускала WinMerge для сравнить с двумя файлами, и я в настоящее время не знаю, как это сделать.

Ответ 1

Попробуйте это

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

Ответ 2

Извините, этот ответ отстой, но вы не можете запускать какое-либо внешнее приложение с помощью щелчка, так как это будет серьезной проблемой безопасности, эта функциональность недоступна в HTML или javascript. Подумайте о том, что просто запускать cmd.exe с помощью args... вы хотите запустить WinMerge с аргументами, но вы можете увидеть проблемы безопасности, возникающие при разрешении этого для чего-либо.

Единственное возможное жизнеспособное исключение, о котором я могу думать, было бы обработчиком протокола (так как это явно определенные обработчики), например winmerge://, хотя лучший способ передать 2 параметра файла я не уверен, если это вариант, на который стоит обратить внимание, но я не уверен, что вы или не можете делать с клиентом, поэтому это может быть решение без стартера.

Ответ 3

Разумным способом запуска приложений из HTML является использование схем URL. Таким образом, вы можете запускать электронную почту через ссылки mailto: и irc через ссылки irc:. Отдельные приложения могут реализовывать эти схемы, но я не уверен, что WinMerge делает это.

Ответ 4

Сделайте командный файл и вызовите файл bacth в Window.open. Вот как это работает.

  • сделать файл в блокноте
  • напишите script: запустите wmplayer "\ dotnet\sc\1234.mp4" /fullscreen
  • сохранить как: test.bat в \dotnet\sc\test.bat

в html

window.open('файл://dotnet/sc/test.bat')

Enjoy..