我可以用ShellExec 打开一个外部程序
ret := ShellExecute(handle, 'open', PChar(filename), nil, nil, SW_NORMAL);
但我想向它发送命令,比如:
msg := 'open ftp://MyUser:MyPass@www.website.com';
这可能吗?
我想这是可能的,但这不是最好的方法。最好的方法是使用CreateProcess
。这是一个更复杂的API,但它会使您尝试的更简单。
程序如下:
- 创建一个或两个管道。你需要一个孩子的标准输入。如果您希望捕获它的输出,则需要另一个
- 调用
CreateProcess
创建子项。将第一个管道的读取端连接到中的子级标准。将第二个管道的写入端连接到子级标准输出 - 如果要发送命令,请写入第一个管道。当您希望读取输出时,请从第二个管道读取
如果您不熟悉这样的编码,这可能会让人望而却步。你最好找一个方便的图书馆。
这篇MSDN文章演示了如何:
创建具有重定向输入和输出的子进程
既然你似乎想做FTP,你最好避免外部进程。使用Indy这样的库。