更新(質問を誤解したため):
プロセス クラスを使用して Forms アプリケーションからプロセスを開始し、出力ストリームをリダイレクトするだけです。
次のように実行します。
ExecuteProcess(@"ConsoleApp.exe", "some arguments here");
// and now you can access the received data from the process from the
// receivedData variable.
コード:
/// <summary>
/// Contains the received data.
/// </summary>
private string receivedData = string.Empty;
/// <summary>
/// Starts a process, passes some arguments to it and retrieves the output written.
/// </summary>
/// <param name="filename">The filename of the executable to be started.</param>
/// <param name="arguments">The arguments to be passed to the executable.</param>
private void ExecuteProcess(string filename, string arguments)
{
Process p = new Process();
// Define the startinfo parameters like redirecting the output.
p.StartInfo = new ProcessStartInfo(filename, arguments);
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.OutputDataReceived += this.OutputDataReceived;
// Start the process and also start reading received output.
p.Start();
p.BeginOutputReadLine();
// Wait until the process exits.
p.WaitForExit();
}
/// <summary>
/// Is called every time output data has been received.
/// </summary>
/// <param name="sender">The sender of this callback method.</param>
/// <param name="e">The DataReceivedEventArgs that contain the received data.</param>
private void OutputDataReceived(object sender, DataReceivedEventArgs e)
{
this.receivedData += e.Data;
}
古い答え:
基本的に、メイン メソッドの「args」パラメータにアクセスすることで、指定されたすべてのコマンド ライン引数にアクセスできます。この小さな例では、指定されたすべてのコマンド ライン引数 (スペース文字で区切られています) をコンソールに出力し、終了する前にキーが押されるのを待ちます。
例:
/// <summary>
/// Represents our program class which contains the entry point of our application.
/// </summary>
public class Program
{
/// <summary>
/// Represents the entry point of our application.
/// </summary>
/// <param name="args">Possibly spcified command line arguments.</param>
public static void Main(string[] args)
{
// Print the number of arguments specified to the console.
Console.WriteLine("There ha{0} been {1} command line argument{2} specified.",
(args.Length > 1 ? "ve" : "s"),
args.Length,
(args.Length > 1 ? "s" : string.Empty));
// Iterate trough all specified command line arguments
// and print them to the console.
for (int i = 0; i < args.Length; i++)
{
Console.WriteLine("Argument at index {0} is: {1}", i, args[i]);
}
// Wait for any key before exiting.
Console.ReadKey();
}
}
最初の WriteLine ステートメントの引数に惑わされないでください。単数形と複数形を正しく出力したかっただけです。
コマンドラインで引数を渡すことで、コマンドライン引数を指定できます。
例: Your.exe 引数 1 引数 2 引数 3
または、IDE でプロジェクトのプロパティを使用します (ソリューション エクスプローラーでプロジェクトを右クリック -> [プロパティ] -> [デバッグ] -> [コマンド ライン引数])。
あなたの質問を正しく理解したことを願っています;-)