用SHFileOperation进行文件拷贝,出现了一个小问题,请各位大虾们指教,谢谢!!(50分)

  • 主题发起人 LearningAug
  • 开始时间
L

LearningAug

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);<br>var<br> &nbsp;lpFileOp: TSHFileOpStruct;<br>begin<br><br> &nbsp;lpFileOp.Wnd := Application.Handle;<br> &nbsp;lpFileOp.wFunc := FO_COPY;<br> &nbsp;lpFileOp.pFrom := PChar(。。。);<br> &nbsp;lpFileOp.pTo := PChar(。。。);<br> &nbsp;lpFileOp.fFlags := FOF_NOCONFIRMATION or FOF_SILENT;//此处没有使用系统自带的进度条<br> &nbsp;lpFileOp.fAnyOperationsAborted := false;<br><br> &nbsp;if SHFileOperation(lpFileOp) = 0 then<br> &nbsp; &nbsp;Application.MessageBox('备份成功!', '提示', MB_OK)<br> &nbsp;else<br> &nbsp; &nbsp;Application.MessageBox('备份失败!', '提示', MB_OK);<br>end;<br><br>当我把lpFileOp.fFlags 的参数加上了 FOF_SILENT后,进行文件拷贝的时候,主窗口没有响应了,只有等文件拷贝完成之后,主窗口Form1才有机会得到响应,请问我应该怎么解决这个问题呢?(我不想使用系统自带的进度条,但是主窗口又能得到及时的相应)。
 
写在线程里才行<br>执行SHFileOperation时,是要等复制完了才会返回的
 
在线程里主窗体确实可以响应,但是我现在如果想终止拷贝,那应该怎样立即停止这个线程呢? 我用aThread.Terminate试过了,这个函数不能立即停止拷贝工作的
 
顶部