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() 吗?

第一个输出是:用户 xxx archive1 archive2

cd 文件夹目录退出

第二个输出是: 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