急!copyfile API(30分)

  • 主题发起人 主题发起人 nenma
  • 开始时间 开始时间
N

nenma

Unregistered / Unconfirmed
GUEST, unregistred user!
我用下一段代码,首先, 从某一路径拷入ARJ文件到一个指定目录, 再ARJ用解压它。<br>当文件拷完再解,不成功! 退出应用程序后,不拷贝,直接解是可以的。<br>我需要,拷完后,马上解开这个压缩。 C++版<br>&nbsp; CopyFile("d://123.arj","d://temp//123.arj",False);<br>&nbsp; ... ...<br>&nbsp; 下面一句在不拷文件时是可以执行的(就是D盘没有123.arj时),如果上面的一句完成成功,<br>&nbsp; 那么下一句是没有执行的,<br><br>&nbsp; if( !CreateProcess(NULL,"arj x -e -y &nbsp; d://temp//123.arj &nbsp;temp",NULL,NULL,FALSE,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CREATE_NEW_CONSOLE|NORMAL_PRIORITY_CLASS,NULL,NULL,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&amp;StartupInfo,&amp;procinfo))<br>&nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShowMessage("error");<br>&nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp;else<br>&nbsp; &nbsp; &nbsp;{<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WaitForSingleObject(procinfo.hProcess,INFINITE);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;...<br>&nbsp; &nbsp; &nbsp; &nbsp; // 进行下面的如果没有解压, 就不会完成下面的?<br>&nbsp; &nbsp; &nbsp; &nbsp; // (实际上在拷贝完后就不能往下了)<br>&nbsp; &nbsp; &nbsp;} <br><br><br><br>
 
CopyFile 是一个异步函数,也就是说,它的执行不依赖于文件是否拷贝完成,发出<br>命令后它就往下执行,所以有可能文件还没拷到目的地,解压却开始了,就容易出现<br>不能解压的情况,因此你需要同步拷贝和解压的步骤。
 
接受答案了.
 
后退
顶部