2010-05-10 18 views
10

Sto generando un report HTML da C# per stampare coppie di file in una tabella che ha 3 colonne: le prime due colonne utilizzate per i nomi file e la 3a colonna è un collegamento ipertestuale Confronta - Voglio che questo collegamento esegua WinMerge per confrontare a due file e attualmente non so come farlo.Come eseguire un programma esterno, ad es. blocco note, utilizzando il collegamento ipertestuale?

+2

Ciò è impossibile in generale, poiché non è possibile sapere quali programmi sono disponibili su un determinato computer. – Raedwald

risposta

15

Prova questa

<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

Questo è quello che voglio. Provo a notare che dobbiamo anche consentire al browser di eseguire javascript e ActiveX. Molte grazie! –

13

Spiacente questa risposta fa schifo, ma non è possibile avviare una qualsiasi applicazione esterna tramite un clic, in quanto ciò rappresenterebbe un grave problema di sicurezza, questa funzionalità non è disponibile in HTML o javascript. Pensa solo all'avvio di cmd.exe con args ... vuoi avviare WinMerge con gli argomenti, ma puoi vedere i problemi di sicurezza introdotti consentendo questo per qualsiasi cosa.

L'unica possibilmente eccezione praticabile mi viene in mente sarebbe un gestore di protocollo (dal momento che questi sono esplicitamente gestori definiti), come winmerge://, anche se il modo migliore per passare 2 parametri del file non sono sicuro di, se è un'opzione che vale la pena esaminare, ma non sono sicuro di cosa siete o non siete autorizzati a fare al cliente, quindi questa potrebbe essere una soluzione non iniziale.

5

Il modo ragionevole per lanciare le app da HTML è attraverso gli schemi di URL. In questo modo puoi avviare la posta elettronica tramite i link mailto: e irc tramite i link irc:. Le singole app possono implementare questi schemi, ma non sono sicuro che WinMerge lo faccia.

2

Fai un file batch e chiamare il file bacth in Window.open. Ecco come funziona

  1. fare un file nel blocco note
  2. scrivere lo script: start wmplayer "\ dotnet \ sc \ 1234.mp4"/fullscreen
  3. Salva come: test.bat in \ dotnet \ sc \ test.bat

in html

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

Qualche idea ..

Problemi correlati