【问题标题】:How can I run a local Windows Application and have the output be piped into the Browser如何运行本地 Windows 应用程序并将输出通过管道传输到浏览器
【发布时间】:2010-04-26 19:35:28
【问题描述】:

我有 Windows 应用程序(.EXE 文件是用 C 语言编写并使用 MS-Visual Studio 构建的),它将 ASCII 文本输出到标准输出。我正在寻找增强 ASCII 文本以包含带有一些链接的有限 HTML。我想调用此应用程序(.EXE 文件)并获取该应用程序的输出并将其通过管道传输到浏览器中。这不是一次性的,每个新网页都将是本地应用程序的另一次运行!

下面的 HTML/java-script 应用程序可以让我执行该应用程序,但输出已进入 DOS 框窗口,而不是通过管道将其输入浏览器。我想更新这个 HTML 应用程序以使浏览器能够捕获该文本(使用 HTML 增强)并在浏览器中显示它。

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

【问题讨论】:

    标签: javascript windows internet-explorer console-application


    【解决方案1】:
    1. 让可执行文件在遵循 HTTP 协议的端口上侦听。
    2. 然后让网页使用 JAvascript 向本地端口发出 AJAX 样式的 HTTP 请求。
    3. 可执行文件返回文本。
    4. 网页通过 Javascript 中的 DOM 操作自行更新。

    是的,这行得通。它现在正在距离我 5 英尺的另一个隔间里发生。

    【讨论】:

    • 您能否向我提供这方面的详细指南?
    • 在听力部分。是否有任何关于监听特定端口的编码应用程序的指南/教程?
    • 谷歌“嵌入式 http 服务器库”。我也认为 CGI 建议是一个不错的选择。
    【解决方案2】:

    这叫CGI

    【讨论】:

    • +10。这是执行此操作的正确方法。编写临时文件很麻烦,让 WSH 监听 StdOut 感觉太老套了,而且绝对没有理由将 Web 服务器的复杂性引入可执行文件。
    【解决方案3】:

    您已经使用 WScript 启动,它也可以读取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>
    

    【讨论】:

      【解决方案4】:

      让您的 EXE 创建一个包含 HTML 的临时文件会更容易,然后告诉 Windows 在浏览器中打开临时 HTML 文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-19
        • 1970-01-01
        相关资源
        最近更新 更多