我在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';
但这不起作用
答案 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。