首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用来删除文件夹的Win32接口函数是什么?

用来删除文件夹的Win32接口函数是什么?
EN

Stack Overflow用户
提问于 2008-10-17 18:51:00
回答 6查看 36K关注 0票数 25

用于以编程方式删除文件和文件夹的Win32 API有哪些?

编辑

DeleteFileRemoveDirectory就是我要找的。然而,对于这个项目,我最终使用了SHFileOperation。我发现CodeGuru上的sample code很有帮助。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-10-17 18:57:22

我觉得你想要DeleteFileRemoveDirectory

票数 18
EN

Stack Overflow用户

发布于 2008-10-20 14:29:49

有两种方法可以解决这个问题。一种是通过File Services (使用DeleteFileRemoveDirectory等命令),另一种是通过Windows Shell (使用SHFileOperation。如果你想删除非空目录或者如果你想要资源管理器风格的反馈(例如,带有浮动文件的进度对话框),推荐使用后者。最快的方法是创建一个SHFILEOPSTRUCT,初始化它并调用SHFileOperation,如下所示:

代码语言:javascript
复制
void silently_remove_directory(LPCTSTR dir) // Fully qualified name of the directory being deleted, without trailing backslash
{
    SHFILEOPSTRUCT file_op = {
        NULL,
        FO_DELETE,
        dir,
        "",
        FOF_NOCONFIRMATION |
        FOF_NOERRORUI |
        FOF_SILENT,
        false,
        0,
        "" };
    SHFileOperation(&file_op);
}

这会默默地删除整个目录。您可以通过改变SHFILEOPSTRUCT初始化来添加反馈和提示-请仔细阅读它。

票数 35
EN

Stack Overflow用户

发布于 2011-09-27 06:46:37

参见上面uvgroovy的评论。'dir‘字段的末尾需要2个空值。

代码语言:javascript
复制
int silently_remove_directory(LPCTSTR dir) // Fully qualified name of the directory being   deleted,   without trailing backslash
{
  int len = strlen(dir) + 2; // required to set 2 nulls at end of argument to SHFileOperation.
  char* tempdir = (char*) malloc(len);
  memset(tempdir,0,len);
  strcpy(tempdir,dir);

  SHFILEOPSTRUCT file_op = {
    NULL,
    FO_DELETE,
    tempdir,
    NULL,
    FOF_NOCONFIRMATION |
    FOF_NOERRORUI |
    FOF_SILENT,
    false,
    0,
    "" };
  int ret = SHFileOperation(&file_op);
  free(tempdir);
  return ret; // returns 0 on success, non zero on failure.
}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/213392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档