使用Windows的ShellExecute函数将数据管道化到文件

时间:2010-01-19 13:37:11

标签: windows delphi shellexecute

我在windows vista中使用' ShellExecute '功能

有没有办法将输出传递给文件?

即。

MySqlDump.exe'-u user1 -ppassword dbName> TheOutputFile.Sql

这是我的代码

theProgram     :=  'MySqlDump.exe';
itsParameters  :=  '-u user1  -ppassword  dbName';
rslt := ShellExecute(0, 'open',
                       pChar (theProgram),
                       pChar (itsParameters),
                       nil,
                       SW_SHOW);

编辑:

我试过了

 itsParameters  :=  '-u user1  -ppassword  dbName > TheOutputFile.Sql';

但这不起作用

4 个答案:

答案 0 :(得分:4)

@Charles,你可以使用重定向器simbol“>”在ShellExecute中,但使用的是cmd.exe,它是Windows命令解释程序。

试试这个样本

ShellExecute(0,nil,'cmd.exe','/c MySqlDump.exe -u user1  -ppassword  dbName > TheOutputFile.Sql',nil,sw_normal);

另一个选择是使用管道,你可以在这个link中找到一个非常好的例子。

答案 1 :(得分:1)

在这种情况下,最简单的方法(禁止cmd脚本)可能使用_popen而不是ShellExecute。

或者更好的是使用mysqldump的--result-file选项。

答案 2 :(得分:1)

无法保证此代码或网站的有效性,但我不止一次听说过DosCommand.pas。我回家后今晚会检查一下。

答案 3 :(得分:1)

您应该使用CreateProcess启动该过程,并提供您在STARTUPINFO结构的hStrOutput中创建的管道的一端。有plenty examples online