首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

拷贝文件夹xp可以win7不行,该怎么解决

2013-01-11 
拷贝文件夹xp可以win7不行求教[解决办法]function File_Action(fFROM, fTO: string Action: integer): Bo

拷贝文件夹xp可以win7不行



求教
[解决办法]
function File_Action(fFROM, fTO: string; Action: integer): Boolean;
// 对文件进行操作
var
    FData: TShFileOpStruct;
begin
    FillChar(FData, SizeOf(TShFileOpStruct), 0);
    FData.pFrom := pchar(fFROM + #0);
    // 设立数据源路径和文件、目录名,支(?,*通配符)
    if fTO <> '' then
        if fTO[length(fTO)] <> '\' then
            fTO := fTO + '\';
    FData.pTo := pchar(fTO + #0); // 设立目标路径
    case Action of
        0:
            FData.wFunc := FO_COPY; // copy
        1:
            FData.wFunc := FO_MOVE; // move
        2:
            FData.wFunc := FO_DELETE; // delete
        3:
            FData.wFunc := FO_RENAME; // rename,未使用
    else
        FData.wFunc := FO_COPY;
    end;
    FData.fFlags := FOF_ALLOWUNDO or FOF_CONFIRMMOUSE; 
    if ExtractFilePath(fFROM) = fTO then
        FData.fFlags := FOF_RENAMEONCOLLISION;
    FData.fAnyOperationsAborted := false;
    FData.hNameMappings := nil;
    case Action of
        0:
            FData.lpszProgressTitle := '复制文件'; // copy


        1:
            FData.lpszProgressTitle := '移动文件'; // move
        2:
            FData.lpszProgressTitle := '删除文件'; // delete
        3:
            FData.lpszProgressTitle := '重命名'; // rename
    end;
    Result := ShFileOperation(FData) = 0;
end;.


把AnsiChar都改成string;
[解决办法]
用这个函数,在Win7下测试通过,XP原来是可以的,不过最近没测试了,要改为移动,把FO_COPY改成FO_MOVE,要加头文件ShellAPI。


function CopyDirectory(const Source, Dest: string; const UI: Boolean = False): boolean;
{
  复制目录对话框
}
var
  fo: TSHFILEOPSTRUCT;
begin
  FillChar(fo, SizeOf(fo), 0);
  with fo do
  begin
    Wnd := GetActiveWindow;
    wFunc := FO_COPY;
    pFrom := PChar(source + #0);
    pTo := PChar(Dest + #0);
    if UI then
      fFlags := FOF_ALLOWUNDO
    else
      fFlags := FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;
  end;
  Result := (SHFileOperation(fo) = 0);
end;

热点排行