winexec问题(2)(50分)

  • 主题发起人 主题发起人 cantonas
  • 开始时间 开始时间
C

cantonas

Unregistered / Unconfirmed
GUEST, unregistred user!
我用一个循环用winexec调用xcopy去复制文件夹,但是它每调用一次都打开一个msdos的窗口,<br>一下子打开了几十个windows,我希望它们都在一个窗口内完成,或调用完自动关闭,<br>怎么办?<br>能自动关闭也很麻烦,xcopy 每次都要确认(direct or file),
 
1、用WinExec('ffffgf',SW_HIDE);<br>2、用Xcopy .... /y &nbsp;去掉确认提示.
 
CreateProcess<br>顺序调用,因为WinExec属于异步执行,当执行完,不等返回结果,直接执行下一句话,所以出现了这个问题。
 
你这种方法最原始。<br>复制文件夹也不用winexec 呀,有更好的方法你为什么不用呢?
 
对呀,简单的COPYFILE API就可以搞定啦.
 
楼上说的是,用xcopy还有可能把超过8个字串的文件名给剪了。
 
COPYFILE API可以copy 整个文件夹里的所有内容吗?包括所有子目录。给个示例可以吗?
 
用SHFILEOPSTRACT可以搞定
 
var<br>&nbsp; SHFileopstruct:TSHFileopstruct;<br>&nbsp; dirname:pchar;<br>&nbsp; Buffersize:cardinal;<br>&nbsp; AHandle:Thandle;<br>begin<br>&nbsp; AHandle:=0;<br>&nbsp; Buffersize:=Length(ADirname)+1+1;<br>&nbsp; Getmem(DirName,Buffersize);<br>&nbsp; try<br>&nbsp; &nbsp; fillchar(dirname^,buffersize,0);<br>&nbsp; &nbsp; strcopy(DirName,pchar(ADirName));<br>&nbsp; &nbsp; with SHFileopstruct do<br>&nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; wnd:=AHandle;<br>&nbsp; &nbsp; &nbsp; &nbsp; wFunc:= FO_DELETE;<br>&nbsp; &nbsp; &nbsp; &nbsp; pFrom:=Dirname;<br>&nbsp; &nbsp; &nbsp; &nbsp; pTo:=nil;<br>&nbsp; &nbsp; &nbsp; &nbsp; fflags:=FOF_NOCONFIRMATION;<br>&nbsp; &nbsp; &nbsp; &nbsp; fAnyOperationsAborted := false;<br>&nbsp; &nbsp; &nbsp; &nbsp; hNameMappings:=nil;<br>&nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; if shfileoperation(SHFileopstruct)&lt;&gt;0 then<br>&nbsp; &nbsp; &nbsp; //'删除文件夹失败!')<br>&nbsp; &nbsp; else //'文件夹已删除!'); &nbsp;<br>&nbsp; finally<br>&nbsp; &nbsp; freeMem(Dirname,buffersize);<br>&nbsp; end;
 
用SHFILEOPSTRACT没有删除或复制整个文件夹里(包括所有子目录)的所有内容吗的方法啊<br>copyfile 可以吗?如果没更好的答案,就把分给TYZhang兄。xcopy 虽然有不少问题,但可<br>暂时解决我的需要,而且不用对我原来程序做大修改。
 
啊,不行!! xcooy的/y参数不能去掉目录/文件的确认提示.<br>如果加上,WinExec('ffffgf',SW_HIDE)不显示执行window,结果会什么都没copy ?<br>如果50分不够可以加(但不知怎么加),手头还有一百多块
 
接受答案了.
 
后退
顶部