CASE 1
Process processo = new Process();
processo.StartInfo.CreateNoWindow = true;
processo.StartInfo.UseShellExecute = false;
processo.StartInfo.RedirectStandardOutput = true;
processo.StartInfo.FileName = "ftp";
processo.StartInfo.Arguments = "-s:comandos.cmd";
processo.Start();
processo.WaitForExit();
output = processo.StandardOutput.ReadToEnd();
CASE 2
AllocConsole();
Process processo = new Process();
processo.StartInfo.CreateNoWindow = true;
processo.StartInfo.UseShellExecute = false;
processo.StartInfo.RedirectStandardOutput = true;
processo.StartInfo.FileName = "ftp";
processo.StartInfo.Arguments = "-s:comandos.cmd";
processo.Start();
processo.WaitForExit();
output = processo.StandardOutput.ReadToEnd();
FreeConsole();
ケース 1 と 2 を使用して出力が同じにならないのはなぜですか? Alloc と FreeConsole は、kernel32.dll の関数です... Windows フォーム アプリケーションを使用しています。
comandos.cmd はサーバーに接続し、「dir」コマンドを使用します。
コンソール ウィンドウを表示せずに AllocConsole() を使用する方法はありますか?
最初の出力: User xxx archive1 archive2
cd フォルダー dir 終了
2 番目の出力: open xxx User xxx 331 User ok 230 Password ok cd Folder archive1 archive2 226 transfer complete xxx bytes received quit 221 GoodBye