function f_OpFolder(p_FromDir,p_ToDir: string; p_Handle: THandle; <br> p_Type:Integer): Integer; <br>//**************************************************** <br>//说明 <br>//文件夹操作函数 <br><br>//参数 <br>//p_FromDir 操作源文件夹 <br>//p_ToDir 操作目标文件夹 <br>//p_Handle Application.Handle <br>//p_Type 操作类型 0: 复制 1:移动 2:删除 3:重命名 <br><br>//返回值 0:操作失败 1:操作成功 <br>//**************************************************** <br>var <br> v_SHFOS: TSHFILEOPSTRUCT; <br> v_ToDir, v_FromDir: array[0..2048] of Char; <br>begin <br> Result:=0; <br> FillChar(v_SHFOS, Sizeof(v_SHFOS), #0); <br> if not DirectoryExists(p_FromDir) then <br> begin <br> MessageBoxW(p_Handle,'操作文件夹不存在!','注意',MB_OK+MB_ICONINFORMATION); <br> Exit; <br> end; <br> FillChar(v_FromDir, Sizeof(v_FromDir), #0); <br> FillChar(v_ToDir, Sizeof(v_ToDir), #0); <br> StrPCopy(v_FromDir, p_FromDir); <br> StrPCopy(v_ToDir, p_ToDir); <br> //*************************************************************************** <br> v_SHFOS.Wnd := p_Handle; <br> v_SHFOS.pFrom := @v_FromDir; //源路径 <br> v_SHFOS.pTo := @v_ToDir; //目标路径 <br> v_SHFOS.hNameMappings := nil; //不使用Map文件 <br> v_SHFOS.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_MULTIDESTFILES or <br> FOF_NOCONFIRMMKDIR or FOF_SIMPLEPROGRESS;//允许撤消,不出现确定窗口,需要创建新目录时不提示 <br> case p_Type of <br> 0:begin //复制 <br> v_SHFOS.lpszProgressTitle := '正在拷贝数据文件...'; //显示进度窗口的Caption <br> v_SHFOS.wFunc := FO_COPY; //执行COPY操作 <br> end; <br> 1:begin //移动 <br> v_SHFOS.lpszProgressTitle := '正在拷贝数据文件...'; //显示进度窗口的Caption <br> v_SHFOS.wFunc := FO_MOVE; //执行MOVE操作 <br> end; <br> 2:begin //删除 <br> v_SHFOS.lpszProgressTitle := '正在删除数据文件...'; //显示进度窗口的Caption <br> v_SHFOS.wFunc := FO_DELETE; //执行DELETE操作 <br> end; <br> 3:begin //重命名 <br> if ExtractFilePath(LowerCase(p_FromDir))&lt;&gt;ExtractFilePath(LowerCase(p_ToDir)) then <br> begin <br> MessageBoxW(p_Handle,'文件夹制定路径不一致!','注意',MB_OK+MB_ICONINFORMATION); <br> Exit; <br> end; <br> v_SHFOS.wFunc := FO_RENAME; //执行RENAME操作 <br> end; <br> else <br> Exit; <br> end; <br> //*************************************************************************** <br> if ShFileOperation(v_SHFOS)=0 then <br> Result:=1; <br>end;