0

aspxページのラベルまたはテキストボックスの値をconsole.exeアプリケーションに渡したいので、値がsample.docの場合はそれに変わります。

aspxページから呼び出しています

   string f = TextBox1.Text;

    System.Diagnostics.Process.Start("C:/DocUpload/ConsoleApplication1.exe", f);

文字列に変換してから、sample.doc の代わりに文字列 vatiable を使用しようとしましたが、うまくいきませんでした

object FileName = System.IO.Path.Combine(ExecutableFileInfo.DirectoryName, "sample.doc");

どんな助けやアイデアも歓迎します。ありがとう

4

2 に答える 2

0

これは、呼び出し元のアプリケーションからプロセスを開始するために使用するものです。Web アプリから呼び出しているため、適切な権限があることを確認する必要があります。

        Process         proc                = new Process();
        StringBuilder   sb                  = new StringBuilder();
        string[]        aTarget             = target.Split(PATH_SEPERATOR); 
        string          errorMessage;
        string          outputMessage;

        foreach (string parm in parameters)
        {
            sb.Append(parm + " ");
        }

        proc.StartInfo.FileName                 = target;
        proc.StartInfo.RedirectStandardError    = true;
        proc.StartInfo.RedirectStandardOutput   = true;
        proc.StartInfo.UseShellExecute          = false;
        proc.StartInfo.Arguments                = sb.ToString();

        proc.Start();

        proc.WaitForExit
            (
                (timeout <= 0)
                ? int.MaxValue : (int)TimeSpan.FromMinutes(timeout).TotalMilliseconds
            );


        errorMessage    = proc.StandardError.ReadToEnd();
        proc.WaitForExit();

        outputMessage   = proc.StandardOutput.ReadToEnd();
        proc.WaitForExit();

MSDN へのリンク:

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.start.aspx

また、Web アプリケーションを実行しているアカウントに、プログラムを実行するための適切なアクセス許可があることを確認する必要があります。

于 2010-03-16T00:19:34.993 に答える
0

別のフォルダにあるファイルを処理しようとしている可能性があります。

その場合は、次のようにファイルのフル パスを渡す必要があります。

Process.Start(@"C:\DocUpload\ConsoleApplication1.exe", 
              Path.Combine(@"C:\path\to\folder", TextBox1.Text));
于 2010-03-16T00:21:17.377 に答える