如何Shell执行程序然后发送命令行文本

时间:2015-12-04 18:15:17

标签: delphi command-line shellexecuteex

我可以使用ShellExec

打开外部程序
 ret := ShellExecute(handle, 'open', PChar(filename), nil, nil, SW_NORMAL);

然后我想发送命令,如:

msg := 'open ftp://MyUser:MyPass@www.website.com';

这可能吗?

1 个答案:

答案 0 :(得分:3)

我猜这可能,但这不是最好的方法。最好的方法是使用CreateProcess。它是一个更复杂的API,但它会使您尝试的更简单。

程序如下:

  1. 创建一个或两个管道。您需要一个孩子的标准输入。如果你想捕获它的输出,你需要另一个。
  2. 致电CreateProcess创建孩子。将第一个管道的读取端连接到子级标准中。将第二个管道的写入端附加到子级的标准输出。
  3. 如果要发送命令,请写入第一个管道。当您想要读取输出时,请从第二个管道中读取。
  4. 如果您不熟悉此类编码,这可能会令人生畏。你可能会找到一个让它变得简单的库。

    这篇MSDN文章演示了如何:

    Creating a Child Process with Redirected Input and Output

    由于您似乎想要进行FTP,因此最好避免使用外部进程。使用像Indy这样的库。