我做了一个程序,用createpipe获取createprocess的输入和输出,但是发现有些程序不能完全兼容。例如ftp输入密码,好像就是直接从控制台设备输入的,而不是从stdin输入。还有ftp〉的提示符也不见了,可能ftp程序发现不是控制台就修改了提示输出部分。不知道是否有什么好方法可以完全兼容控制台输入输出的,windows自带的telnet就可以,但程序不知道如何写,请高手指点。

解决方案 »

  1.   

    我给你写了个程序,这个可以实现和CMD交互的,和ftp没有任何问题
    http://www.brsbox.com/filebox/down/fc/02d018c57f55384bd69683ea0220da25你只要注意ftp.exe的参数就行了,我已经测试过了ftp.exe的回显,没有问题语法:
    ftp [-v][-d][-i][-n][-g][-s:FileName][-a][-w:WindowSize][-A][Host]参数
    -v 
       禁止显示 FTP 服务器响应。 
    /d 
       启用调试、显示在 FTP 客户端和 FTP 服务器之间传递的所有命令。 
    -i 
       传送多个文件时禁用交互提示。 
    -n 
       在建立初始连接后禁止自动登录功能。 
    -g 
       禁用文件名组合。Glob 允许使用星号 (*) 和问号 (?) 作为本地文件和路径名
    的通配符字符。
    -s:filename 
       指定包含 ftp 命令的文本文件。这些命令在启动 ftp 后自动运行。该参数不
    允许带有空格。使用该参数而不是重定向 (<)。 
    -a 
       指定绑定 FTP 数据连接时可以使用任何本地接口。 
    -w:windowsize 
       指定传输缓冲的大小。默认窗口大小为 4096 字节。 
    -A 
       匿名登录到 FTP 服务器。 
    Host 
       指定要连接的计算机名、IP 地址或 FTP 服务器的 IPv6 地址。如果指定了主
    机名或地址,则其必须是命令行的最后一个参数。 
    /? 
       在命令提示符下显示帮助。 2 ftp批处理文件的制作     新建两个文件ftpget.bat和ftpget.txt,前者就是我们要制作的批处理文件,
    其内容为:
         ftppath\ftp.exe -i -s:ftpget.txt host
    其中ftppath为ftp所在目录,host为ftp服务器IP地址。
    ftpget.txt文件内容为:
    username
    password
    cd filepath
    get filename1
    get filename2
    ...
    get filenamen
    quit
    其中,filepath是要下载文件所在的目录,filename1-->filenamen 是要下载的
    文件名。 
      

  2.   

    ftp.exe -i -s:ftpget.txt host 
    用这种方式来调用并回显,ftp.exe支持的参数太恶心了,没办法
      

  3.   

    给你看下效果ftpget.txt内容如下biweilun
    517
    ls用户名biweilun密码517,文件都列出来了吧