如何在没有system()的情况下使用C复制和粘贴Windows中的文件或目录

时间:2014-01-10 19:31:04

标签: c

我正在制作一个基本的文件浏览器,所以我想在我的程序中包含复制和粘贴功能。我不在任何GUI环境和win32api中工作。

我有LCRS树,

其中C:驱动器是父驱动器 并且它的第一个文件夹是左子,其余的是右兄弟

因此,当我选择任何子节点或兄弟节点进行复制并选择其目的地时,所有内容都应粘贴在所需的位置。

可以使用带有cp命令和mkdir()函数的system()来完成。还有另一种方式吗?

还告诉我如何在相关应用程序中打开文件?像abc.txt一样在记事本中打开。

1 个答案:

答案 0 :(得分:0)

这是使用SHFileOperation的包装器。它可用于复制大多数文件或目录;有一些例外(例如,尝试将您无权访问的目录或特殊文件夹(如My Documents)复制到远程网络)。成功后它会返回0

#include <Shellapi.h>
int Copy(PCZZTSTR source, PCZZTSTR destination) {
    return SHFileOperation(&(SHFILEOPSTRUCTW){ .wFunc  = FO_COPY,
                                               .pFrom  = source,
                                               .pTo    = destination,
                                               .fFlags = FOF_SILENT
                                                       | FOF_NOCONFIRMMKDIR
                                                       | FOF_NOCONFIRMATION
                                                       | FOF_NOERRORUI
                                                       | FOF_NO_UI });
}