2012-07-13 65 views
0

我正在尝试编写一个基于Web的应用程序,该应用程序将允许用户在表单域中输入信息(特别是整数),将作为条目输入的信息添加到.def文件中,在文件上运行“.exe”文件(用C++编写),然后点击“提交”按钮后在屏幕上显示输出。我已经编写了用JavaScript运行.exe文件的函数,但它们不起作用。以下是我迄今为止:从Web应用程序运行.exe文件

输入屏幕上有此代码(HTML文件):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html><head></head>><body><h1><i>The University of Vermont<br>Department of Medical  Biostatistics<br>Study Randomization Page</i></h1> 
<?php 
    $study = "study"; 
    $site = "site"; 
    $gender = "gender"; 
    $age = "age"; 
    $result = "result"; 
?> 

Please Input Your Study Information Below:<br><br> 
<form id="form1" action="file:///C:/Documents and Settings/cody/Desktop/DMB_RD_2.php"  method="post"> 
Study Number:<br> <input name="study" type="int"><br> 
Site Number:<br> <input name="site" type="int"><br> 
Subject Gender:<br> <input name="gender" type="int"><br> 
Subject Age:<br> <input name="age" type="int"><br> 
Lab Result:<br>  <input name="result" type="int"><br> 
<input value="Submit" class="button" type="submit"> 
</form> 
</body></html> 
Here is the page it is connected to (PHP file); 
<script type="text/javascript" src="DMB++2JS.js"></script> 
<script type="text" src="DMB Round 2.html"></script> 
</head> 
Here is the information that you input:<br /><br /> 
Study Number: <?php echo $_POST["study"]; ?><br /> 
Site Number: <?php echo $_POST["site"]; ?><br /> 
Subject Gender: <?php echo $_POST["gender"]; ?><br /> 
Subject Age: <?php echo $_POST["age"]; ?><br /> 
Lab Result: <?php echo $_POST["result"]; ?><br /> 
<br /> 
The following functions will randomize your data. Please indicated which method you would like to use by clicking on the button of the randomization method that you would like to use:<br /><br /> 
<input type="button" href="blockfn()" onclick="javascript:blockfn(); return  true;">Block Function</button><br /> 
<input type="button" href="d2rfn()" onclick="javascript:d2rfn(); return true;">Random Distance Function</button><br /> 
<input type="button" href="d2dfn()" onclick="javascript:d2dfn(); return true;">Determinate Distance Function</button><br /> 
<input type="button" href="minimizefn()" onclick="javascript:minimizefn(); return true;">Minimization Function</button><br /> 
<input type="button" href="pocockfn()" onclick="javascript:pocockfn(); return true;">Pocock Function</button><br /> 
</body> 
</html> 

这里是JavaScript写在它的功能文件:

function d2rfn(){ 
    var oShell = new ActiveXObject("Shell.Application"); 
    var commandtoRun = "C:\Documents and Settings\cody\Desktop\C++ Programs\D2R001.def"; 
    oShell.ShellExecute(commandtoRun,"","","open","1"); 
} 
function d2dfn(){ 
    var oShell = new ActiveXObject("Shell.Application"); 
    var commandtoRun = "C:\Documents and Settings\cody\Desktop\C++ Programs\D2D001.def"; 
    oShell.ShellExecute(commandtoRun,"","","open","1"); 
} 
function minimizefn(){ 
    var oShell = new ActiveXObject("Shell.Application"); 
    var commandtoRun = "C:\Documents and Settings\cody\Desktop\C++ Programs\MINIMIZE001.def"; 
    oShell.ShellExecute(commandtoRun,"","","open","1"); 
} 
function pocockfn(){ 
    var oShell = new ActiveXObject("Shell.Application"); 
    var commandtoRun = "C:\\Documents and Settings\\cody\\Desktop\\C++ Programs\\POCOCK2001.def"; 
    oShell.ShellExecute(commandtoRun,"","","open","1"); 
} 
//Another possible way of calling the .exe file from the web interface. 
var objShell = new ActiveXObject("WScript.Shell"); 
</script> 

最后,我写在ASP文件(这是行不通的):

<% 
    dim Study 
    Study=Request.QueryString("Study") 
    If Study<>"" Then 
     Response.Write(Study) 
    End If 
    dim Site 
    Site=Request.QueryString("Site") 
    If Site<>"" Then 
     Response.Write(Site) 
    End If  
    dim Gender 
    Gender=Request.QueryString("Gender") 
    If Gender<>"" Then 
     Response.Write(Gender) 
    End If 
    dim Age 
    Age=Request.QueryString("Age") 
    If Age<>"" Then 
     Response.Write(Age) 
    End If 
    dim Result 
    Result=Response.QueryString("Result") 
    If Result<>"" Then 
     Response.Write(Result) 
    End If 
%> 

有没有人有一个更清洁的方式来创建吃了这个应用程序?这将非常感激。谢谢!

+3

你真的认为一个网页可以让你在电脑上运行一个程序吗?通常这就是所谓的漏洞... :) – 2012-07-13 19:26:09

+0

一个清洁工不会混合ASP和PHP?那么你做这个作为网络,而不是Windows应用程序? – 2012-07-13 19:29:07

+0

这就是病毒如何传播。为什么不做exe处理服务器端? – jrummell 2012-07-13 19:31:31

回答

0

不要这样做。 JavaScript运行在客户端计算机上,这意味着程序将在客户端的计算机上运行,​​并且文件也需要在那里。这打破了一个Web应用程序的目的。

此外,还有各种非常好的安全原因,不允许浏览器内的JavaScript运行本地可执行文件 - 如果支持,访问一个网站可能会导致您的计算机运行format.exe。

首先,选择一个服务器端的Web开发框架。不要试图结合PHP & ASP.NET。其次,弄清楚在没有文件系统和命令行实用程序的文件的情况下是否有办法处理这个问题。你可以在你选择的任何开发框架中做这个逻辑吗?如果你不能,你需要弄清楚如何编写一个文件,如何调出一个.exe文件以及如何返回结果。这些问题本身都不是特别棘手,我会按照这个顺序一次一个地解决它们。