0

ユーザーが情報 (具体的には整数) をフォーム フィールドに入力し、入力された情報を .def ファイルにエントリとして追加し、'.exe' ファイル (C++ で記述) を実行できるようにする Web ベースのアプリケーションをプログラムしようとしています。 ) をファイルに追加し、「送信」ボタンをクリックした後に画面に出力を表示します。JavaScript で .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
%>

このアプリケーションを作成するためのよりクリーンな方法はありますか? それは大歓迎です。ありがとう!

4

1 に答える 1

0

これをしないでください。JavaScript はクライアント コンピューター上で実行されます。これは、プログラムがクライアントのコンピューター上で実行され、ファイルもそこにある必要があることを意味します。これは、Web アプリケーションを持つ目的を無効にします。

さらに、ブラウザー内の JavaScript がローカルの実行可能ファイルを実行することを許可しないことには、あらゆる種類の非常に優れたセキュリティ上の理由があります。これがサポートされている場合、Web サイトにアクセスすると、コンピューターでたとえば format.exe が実行される可能性があります。

まず、サーバー側の Web 開発フレームワークを 1 つ選びます。PHP と ASP.NET を組み合わせようとしないでください。次に、ファイル システム上のファイルとコマンド ライン ユーティリティを使用せずにこれを処理する方法があるかどうかを調べます。選択した開発フレームワークでこのロジックを実行できますか? それができない場合は、ファイルの書き込み方法、.exe を呼び出すシェル アウトの方法、および結果を返す方法を理解する必要があります。これらの問題はどれも、それ自体が特にトリッキーなものではありません。この順序で、一度に 1 つずつ取り組みます。

于 2012-07-13T20:50:31.800 に答える