4

我在 windows vista 中使用 '<strong>ShellExecute' 函数

有没有办法将输出通过管道传输到文件?

IE

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

4 回答 4

5

@Charles,您可以在 ShellExecute 中使用重定向器 simbol ">",但使用 Windows 命令解释器 cmd.exe。

试试这个样本

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

另一种选择是使用管道,您可以在此链接中找到一个非常好的示例。

于 2010-01-19T14:20:58.823 回答
1

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

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

于 2010-01-19T13:49:19.377 回答
1

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

于 2010-01-19T14:05:41.663 回答
1

您应该使用CreateProcess启动该过程,并提供您在STARTUPINFO结构的 hStrOutput 中创建的管道的一端。网上有很多例子。

于 2010-01-19T14:28:02.953 回答