Как запустить внешнюю программу, например, блокнот, используя гиперссылку?
Я создаю отчет HTML на C# для печати пар файлов в таблице, которая имеет 3 столбца: первые два столбца используются для имен файлов, а третий столбец - гиперссылка. Сравнить. Я хочу, чтобы эта ссылка запускала WinMerge для сравнения с двумя файлы, и я в настоящее время не знаю, как это сделать.
4 ответа
Попробуй это
<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>
Извините, этот ответ - отстой, но вы не можете запустить какое-либо внешнее приложение одним щелчком мыши, так как это будет серьезной проблемой безопасности, эта функция недоступна в HTML или javascript. Подумайте только о запуске cmd.exe
с аргументами... вы хотите запустить WinMerge с аргументами, но вы можете увидеть проблемы с безопасностью, допуская это для чего угодно.
Единственное возможное жизнеспособное исключение, о котором я могу думать, это обработчик протокола (так как это явно определенные обработчики), например winmerge://
Хотя лучший способ передать 2 параметра файла, в которых я не уверен, стоит ли рассматривать эту опцию, но я не уверен, что вы или не можете делать с клиентом, так что это может быть не стартовый раствор.
Разумный способ запуска приложений из HTML - через URL-схемы. Таким образом, вы можете запустить электронную почту через mailto:
ссылки и IRC через irc:
ссылки. Отдельные приложения могут реализовывать эти схемы, но я не уверен, что WinMerge делает это.
Создайте командный файл и вызовите его в Window.open. Вот как это работает
- сделать файл в блокноте
- напишите свой скрипт: запустите wmplayer "\dotnet\sc\1234.mp4" /fullscreen
- сохранить как: test.bat в \ dotnet \ sc \ test.bat
в HTML
window.open('Файл://dotnet/sc/test.bat')
Наслаждаться..
Я написал небольшое расширение для этого.
Поскольку вы создаете страницу с использованием 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>
Результат: