【问题标题】:Delphi ShellExecute not working in Windows 7Delphi ShellExecute 在 Windows 7 中不起作用
【发布时间】:2012-12-19 17:01:38
【问题描述】:

我只知道这很简单,但是我已经尝试了我在这个论坛上可以找到的所有建议,但我仍然无法获得以下 ShellExecute 语句,它在 XP 上运行了四年,效果很好,在 Windows 7 中工作。

任何建议都非常感谢!

ShellExecute(Handle, 'open', PChar('command.com'), PChar('/c ftp -s:c:\checkout\WebFTPParams.txt 91.208.99.4'), Nil, SW_SHOW);
ShellExecute(Handle, 'open', PChar('command.com'), PChar('/c ftp -s:c:\checkout\WWFTPParams.txt 212.78.232.39'), Nil, SW_SHOW);

无论如何,谢谢各位,但我找到了问题所在。我应该一直使用 CMD.EXE 而不是旧的 Command.com。打扰您了!

【问题讨论】:

    标签: delphi windows-7 shellexecute


    【解决方案1】:

    Command.com 在 Windows 中不再存在(它曾在 DOS 中使用)。使用 cmd.exe

    【讨论】:

      【解决方案2】:

      如前所述,command.com 是 DOS/Windows 9x 命令解释器。但我认为根本没有理由调用命令解释器。我会这样做:

      ShellExecute(Handle, nil, 'ftp.exe', '-s:c:\checkout\WWFTPParams.txt 212.78.232.39', nil, SW_SHOW);
      

      这里也不需要指定动词。

      【讨论】:

      • 谢谢大卫 - 恐怕这对我来说是一本食谱。我对这个地区了解不多,所以我找到了一个有效的模式,然后就走出了窗外!
      【解决方案3】:

      不同版本的 Windows 使用不同的命令行解释器。旧版本使用 command.com,新版本使用 cmd.exe。使用GetEnvironmentVariable('COMSPEC') 发现要使用的正确解释器。

      话虽如此,在这种情况下您不需要使用任何解释器。 ftp.exe 是它自己的应用程序,因此您可以直接运行它。虽然您可以使用ShellExecute() 来运行 exe 文件,但它确实不是为了那个。它只会委托给CreateProcess(),所以你真的应该去掉中间人,直接使用CreateProcess()

      更好的是,您应该考虑直接在自己的代码中使用 FTP 协议,而不是使用外部进程。有大量第三方组件,如 Indy、ICS、Synapse 等,以及 API,如 WinInet、libcurl 等,都有 FTP 客户端实现,并且在 Delphi 中很容易使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-09
        • 1970-01-01
        • 2012-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-04
        • 1970-01-01
        相关资源
        最近更新 更多