我想用winexec 调用如下命令,但失败。估计是空格的问题C:\Program Files\Borland\Delphi6\Projects\动力公司 售气\mysqldump.exe -ukeke -pqjwTV.dvqPxyb2z2 -hlocalhost --default-character-set=GBK  --compress --single-transaction -F dongli > C:\Program Files\Borland\Delphi6\Projects\动力公司 售气\backup\dongli2008-9-13 21:33:09.sql -a -b另外在运行里面应该怎么写?

解决方案 »

  1.   

    从功能上: createprocess   >   shellexecute   >   winexec   复杂程度也是!winexec() 只用于可执行文件,是一个老函数啦,虽然使用方便,但不推荐!(兼容性也不好)          
    shellexcute()
    是通过windows外壳打开任意文件,非可执行文件自动通过关联的程序打开 
    对于可执行文件,区别不大,不过shellexcute可以指定运行时的工作路径winexec() 必须有GetMessage或超时之后才返回!CreateProcess和ShellExecute都是直接返回的!procedure TForm1.Button1Click(Sender: TObject);
    var
      h:pchar;
    begin
      h:='E:\代码\MY'+#32+'CODE\1.1\AQ.EXE';   //#32就是空格的值
      winexec(PCHAR(H),SW_SHOWNORMAL);
    end;end.
      

  2.   

    var 
      uwantrun:pchar;
    begin
      uwantrun:='C:\Program Files\Borland\Delphi6\Projects\动力公司 售气\mysqldump.exe -ukeke -pqjwTV.dvqPxyb2z2 -hlocalhost --default-character-set=GBK  --compress --single-transaction -F dongli > C:\Program Files\Borland\Delphi6\Projects\动力公司 售气\backup\dongli2008-9-13 21:33:09.sql -a -b'
      winexec(uwantrun,SW_SHOWNORMAL); 
    end; end.  
     
      

  3.   

    自己搞定了,弄了一晚上。。气死人了!
    extractfilepath(application.ExeName)---->'C:\Program Files\Borland\Delphi6\Projects\动力公司 售气\'
    首先,第一个问题:有空格需要添加""双引号就可以。
    第二个问题:重定向问题  :cmd.exe /cbegin
      cmd1:='cmd.exe /C "'+extractfilepath(application.ExeName)+'mysqldump.exe"' ;
      cmd2:=' -u'+databaseUser+ ' -p'+databasePassword+' -h'+databaseAddress +' --default-character-set=GBK  --compress --single-transaction -F '+databaseName+' > "'+extractfilepath(application.ExeName)+'backup\'+databaseName+inttostr(DateTimeToFileDate(Now))+'.sql"';
    ret:=WinExec(PChar ('cmd.exe /C '+cmd1+cmd2 ), SW_HIDE);end;
      

  4.   

    感谢楼主,我以为只能用createprocess呢。