Передача данных в файл с помощью функции Windows «ShellExecute» - PullRequest
3 голосов
/ 19 января 2010

Я использую функцию ShellExecute в Windows Vista

Есть ли способ передать вывод в файл?

то есть

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 голосов
/ 19 января 2010

@ Чарльз, вы можете использовать символ перенаправления ">" в ShellExecute, но используя cmd.exe, который является интерпретатором команд Windows.

попробуйте этот образец

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

Другой вариант - использовать каналы, очень хороший пример вы можете найти в этой ссылке .

1 голос
/ 19 января 2010

Вы должны запустить процесс, используя CreateProcess и предоставить один конец канала, который вы создаете в hStrOutput структуры STARTUPINFO .Есть множество примеров онлайн .

1 голос
/ 19 января 2010

Не могу ручаться за достоверность этого кода или сайта, но я слышал о DosCommand.pas более одного раза.Я проверю это сегодня вечером, когда вернусь домой.

1 голос
/ 19 января 2010

В этом сценарии самый простой подход (за исключением сценария cmd), вероятно, заключается в использовании _popen вместо ShellExecute.

Или еще лучше - используйте параметр --result-file для mysqldump.

...