API函数SHFileOperation()系统资源占用问题(100分)

  • 主题发起人 主题发起人 rocsoft
  • 开始时间 开始时间
R

rocsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
我在使用API函数SHFileOperation()进行文件复制的时候系统资源占用太大,一动鼠标界面就死掉。不知道怎么调整。还有使用这个函数如何在复制过程中停止啊?
 
用SHFileOperation()复制其实就是我们平时windows的复制操作,本身就有“取消”按钮的。
 
复制的时候,我把那个弹出窗口屏蔽了,因为那样效率太低,我是想用命令来取消。我最关心的还是资源占用的问题!
 
你的意思我明白,不过如果使用SHFileOperation好像就是那样的,我原来也遇到过相同的情况,不过复制的文件很少是非常大的,还可以接受。
 
SHFileOperation,这个操作速度相当慢的,我用它删除一个目录需要一秒钟的时间。
 
那在线程里做吧。
 
coolingxyz能不能说得具体点?cymon77,你有什么比较快的解决办法吗?miaofeng,我用它来复制C盘(800M——2G)应该没有问题吧?
 
800M——2G是比较大,SHFileOperation恐怕不能让人非常满意,不过复制这么大的东西,感觉其他方法的效果也不会特别的好。
 
谁能具体说说怎么解决问题?我需要复制800M——2G的东西,能够中途停止复制,能够做更新复制,不知道有没有好的方法啊?
 
var<br>&nbsp; sPath: string;<br>&nbsp; fsTemp: SHFILEOPSTRUCT;<br>&nbsp; Flags: FILEOP_FLAGS;<br>&nbsp; i, t: integer;<br>begin<br>&nbsp; Flags := Flags + FOF_ALLOWUNDO;//允许Undo动作<br>&nbsp; Flags := Flags + FOF_RENAMEONCOLLISION;//冲突时重新命名<br>&nbsp; Flags := Flags + FOF_SILENT;//不显示进度<br>&nbsp; Flags := Flags + FOF_NOCONFIRMMKDIR;//创建新目录不确认<br>&nbsp; if sPath &lt;&gt; '' then<br>&nbsp; begin<br>&nbsp; &nbsp; fsTemp.Wnd := Self.Handle; //设置文件操作类型<br>&nbsp; &nbsp; fsTemp.wFunc := FO_COPY;<br>&nbsp; &nbsp; fsTemp.fFlags := Flags;<br>&nbsp; &nbsp; for i := 0 to FileListView.Items.Count - 1 do<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //允许执行撤消操作 &nbsp; &nbsp; &nbsp;//////////<br>&nbsp; &nbsp; begin //源文件全路径名<br>&nbsp; &nbsp; &nbsp; if FileListView.Items.Item.Caption = '..' then<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue;<br>&nbsp; &nbsp; &nbsp; fsTemp.pFrom := PChar(FileListView.Items.Item.Caption + #0#0);<br>&nbsp; &nbsp; &nbsp; fsTemp.pTo := PChar(sPath + #0#0); //要复制到的路径<br>&nbsp; &nbsp; &nbsp; fsTemp.lpszProgressTitle := '拷贝文件';<br>&nbsp; &nbsp; &nbsp; if SHFileOperation(fsTemp) &lt;&gt; 0 then<br>&nbsp; &nbsp; &nbsp; &nbsp;// '文件复制不成功!';<br>&nbsp; &nbsp; &nbsp; else<br>&nbsp; &nbsp; &nbsp; &nbsp; // '文件复制成功!';<br>&nbsp; &nbsp; end;<br>&nbsp; end;<br>end;<br>&nbsp; &nbsp; &nbsp;
 
app2001,感谢你的代码。你知道怎么把这些代码跟多线程结合起来吗?
 
感谢他们,问题已经解决!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部