0
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

4

0 に答える 0