6

Ho un'applicazione Windows (il file .EXE è scritto in C e costruito con MS-Visual Studio), che invia il testo ASCII allo stdout. Sto cercando di migliorare il testo ASCII includendo HTML limitato con pochi collegamenti. Mi piacerebbe richiamare questa applicazione (file .EXE) e prendere l'output di tale applicazione e inserirla in un browser. Questa non è una cosa da una sola volta, ogni nuova pagina web sarebbe un'altra versione dell'applicazione locale!Come posso eseguire un'applicazione locale di Windows e fare in modo che l'output sia convogliato nel browser

L'applicazione HTML/java-script di seguito ha funzionato per me per eseguire l'applicazione, ma l'output è entrato in una finestra di DOS Box e non per inserirlo nel browser. Mi piacerebbe aggiornare questa applicazione HTML per consentire al browser di acquisire quel testo (che è migliorato con HTML) e visualizzarlo con il browser.

<body> 
<script> 
function go() { 
    w = new ActiveXObject("WScript.Shell"); 
    w.run('C:/DL/Browser/mk_html.exe'); 
    return true; 
    } 

</script> 

<form> 
    Run My Application (Window with explorer only) 
    <input type="button" value="Go" 
    onClick="return go()"> 
</FORM> 

</body> 

risposta

2
  1. Avere l'eseguibile in ascolto su una porta seguendo il protocollo HTTP.
  2. Quindi fare in modo che la pagina Web effettui richieste HTTP in stile AJAX alla porta locale con JAvascript.
  3. L'eseguibile restituisce il testo.
  4. La pagina Web si aggiorna tramite la manipolazione DOM in Javascript.

Sì, questo funziona. Sta accadendo a un metro da me in questo momento in un altro cubicolo.

+0

Potrebbe fornirmi il dettaglio linee guida su questo? –

+0

Haikal, quale parte non è chiara su come potrebbe essere raggiunto? –

+0

Sulla parte di ascolto. C'è qualche guida/tutorial sull'applicazione di codifica che ascolti una porta specifica? –

0

Sarebbe più semplice fare in modo che il file EXE crei un file temporaneo contenente l'HTML, quindi chiedi a Windows di aprire il file HTML temporaneo nel browser.

2

Il tuo WScript già in uso, può anche leggere StdOut.

<html> 
<head> 
<script type="text/javascript"> 
function foo() { 
var WshShell = new ActiveXObject("WScript.Shell"); 
var oExec = WshShell.Exec("ipconfig.exe"); 
var input = ""; 

while (!oExec.StdOut.AtEndOfStream) { 
     input += oExec.StdOut.ReadLine() + "<br />"; 
} 

if (input) 
    document.getElementById("plop").innerHTML = input; 
} 
</script> 
</head> 
<body onload="foo();"> 
<code id="plop"></code> 
</body> 
</html> 
2

Questo si chiama CGI

+0

+10. Questo è il modo corretto per farlo. Scrivere file temporanei è complicato, visto che WSH ascolta StdOut sembra troppo hacky e non c'è assolutamente alcun motivo per introdurre la complessità di un server web nell'eseguibile. – josh3736