2010-05-10 14 views
10

Estoy generando un informe HTML por C# para imprimir pares de archivos en una tabla que tiene 3 columnas: las dos primeras columnas utilizadas para los nombres de archivo y la tercera columna es un hipervínculo Comparar - Quiero que este enlace se ejecute WinMerge para comparar a dos archivos y actualmente no sé cómo hacerlo.Cómo ejecutar un programa externo, p. Bloc de notas, utilizando hipervínculo?

+2

Esto es imposible en general, porque no puede saber qué programas están disponibles en una computadora en particular. – Raedwald

Respuesta

15

probar este

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

Esto es lo que quiero. Intento y observo que también debemos permitir que el navegador ejecute javascript y ActiveX. ¡Muchas gracias! –

13

Lo siento, esta respuesta es una mierda, pero no se puede iniciar una aplicación externa simplemente con un clic, ya que esto sería un grave problema de seguridad, esta funcionalidad no está disponible en HTML o JavaScript. Piense en simplemente lanzar cmd.exe con args ... desea iniciar WinMerge con argumentos, pero puede ver los problemas de seguridad introducidos al permitir esto para cualquier cosa.

La única excepción posiblemente viable que se me ocurre sería un controlador de protocolo (ya que estos son explícitamente manipuladores definidos), como winmerge://, aunque la mejor manera de pasar 2 parámetros del archivo no estoy seguro de, si es una opción, vale la pena investigarla, pero no estoy seguro de lo que le está permitido o no le está permitido hacer al cliente, por lo que puede tratarse de una solución no inicial.

5

La forma razonable de iniciar aplicaciones desde HTML es mediante esquemas de URL. Para que pueda iniciar el correo electrónico a través de los enlaces mailto: e irc a través de irc: enlaces. Las aplicaciones individuales pueden implementar estos esquemas, pero no estoy seguro de que WinMerge lo haga.

2

hacer un archivo por lotes y llamar al archivo bacth en Window.open. Aquí cómo funciona

  1. hacer un archivo en libreta
  2. escribir su guión: start wmplayer "\ dotnet \ SC \ 1234.mp4"/pantalla completa
  3. guardar como: test.bat en \ dotnet \ sc \ test.bat

en html

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

Enjoy ..

Cuestiones relacionadas