我在Windows Vista中使用“ ShellExecute ”function
有没有办法将输出传输到文件?
即
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';
但是这不起作用
@Charles,你可以在ShellExecute中使用重定向器simbol“>”,但使用Windows命令解释器cmd.exe。
试试这个例子
ShellExecute(0,nil,'cmd.exe','/c MySqlDump.exe -u user1 -ppassword dbName > TheOutputFile.Sql',nil,sw_normal);
另一个选择是使用管道,你可以在这个链接中找到一个非常好的例子。
在这种情况下,最简单的方法(禁止cmd脚本)可能是使用_popen而不是ShellExecute。
或者更好的办法是使用mysqldump的–result-file选项。
不能担保此代码或网站的有效性,但我不止一次听说过DosCommand.pas 。 我今天晚上回家的时候会检查一下。
您应该使用CreateProcess启动该进程,并提供在STARTUPINFO结构的hStrOutput中创建的管道的一端。 网上有很多例子 。