如何ShellExecute一个程序,然后发送命令行文本



我可以用ShellExec 打开一个外部程序

 ret := ShellExecute(handle, 'open', PChar(filename), nil, nil, SW_NORMAL);

但我想向它发送命令,比如:

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

这可能吗?

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

程序如下:

  1. 创建一个或两个管道。你需要一个孩子的标准输入。如果您希望捕获它的输出,则需要另一个
  2. 调用CreateProcess创建子项。将第一个管道的读取端连接到中的子级标准。将第二个管道的写入端连接到子级标准输出
  3. 如果要发送命令,请写入第一个管道。当您希望读取输出时,请从第二个管道读取

如果您不熟悉这样的编码,这可能会让人望而却步。你最好找一个方便的图书馆。

这篇MSDN文章演示了如何:

创建具有重定向输入和输出的子进程

既然你似乎想做FTP,你最好避免外部进程。使用Indy这样的库。

相关内容

最新更新