问题标签 [shfileoperation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2152 浏览

windows - SHFileOperation FOF_ALLOWUNDO 在长文件名上失败

我正在使用以下函数将文件删除到回收站:(C++、MFC、Unicode)

这适用于大多数文件。但是如果路径+文件名超过 255 个字符(并且仍然比 2048 个字符短得多),SHFileOperation 返回 124。即 DE_INVALIDFILES。

但是怎么了?我检查了一切一百万次。路径是双空终止的,我没有使用 \\?\ 它适用于短文件名。

我完全没有想法...

0 投票
1 回答
1182 浏览

string - 在delphi中如何创建一个带有空分隔符的字符串

我正在使用 SHFileOperation ,源可以是 pwidechar ,文件名由 null 分隔,整个内容以双 null 结尾。

我可以创建一个widechar 数组,它包含我需要的信息,但是当我尝试将函数转换为pwidechar 时,它只复制到第一个null。

我究竟做错了什么?

0 投票
1 回答
2051 浏览

delphi - 系统调用级别不正确

我正在使用 SHFileOperation 将文件删除到回收站。但有时我收到“系统调用级别不正确”错误。它不是每次或每个文件都发生。只是随机时间的一些随机文件。有人知道原因吗?谢谢。

更新:这是我正在使用的代码:

0 投票
1 回答
5249 浏览

c++ - SHFileOperation 使用字符串复制文件夹

我正在尝试按SHFileOperationA功能复制文件夹。这是我的代码。

我无法理解如何使字符串附加\0两次。我尝试过这样的事情。

但是,它不起作用。我还尝试了更多组合,但没有一个有效。请任何人都可以建议我如何解决这个问题?

我可以通过直接分配这样的路径来解决问题:-

问题得到解决,但我的意图是使用字符串。请任何人都可以帮我解决这个问题。

另外,如果可能的话,任何人都可以告诉我为什么直接分配字符串常量,即sf.pFrom = "D:\\check\\folder4";有效,而使用类似字符串的分配sf.pFrom = source.c_str( );无效?

提前致谢。

0 投票
1 回答
829 浏览

copy - SHFILEOPERATION 与 ShowMessage - C++ Builder

我在 C++ Builder 中编写此代码以将一些文件夹从安装在 x: 上的网络文件夹(例如 x:\games\foldername)复制到本地路径:d:\program files。我使用 shfileopstruct 如下。

源路径(s 变量)是使用 FieldByName("path") 从数据库中获取的,然后给它一个前缀("x:\games\" 和 MSDN 建议的 "\0" 。 SHFILEOPERATION 可以正常工作。 . 但不同寻常的是,当我删除有关 ShowMessage(path) 的代码(我有用于验证)时,SHFILEOPERATION 确实失败了。

对此有什么建议吗?我错过了什么吗?我很感激你的帮助,因为我没有经验。提前致谢。

0 投票
1 回答
1171 浏览

winapi - 带有自定义进度条的 SHFileOperation 副本/c++ builder

我使用 C++ Builder 和 SHFileOperation 从网络位置下载应用程序(其文件夹)。WinApi 有自己的进度条,但我需要一个带有进度条的自定义表单。

如何单独跟踪复制进度,以便拥有自己的进度条?一个简短的例子肯定会有所帮助。谢谢。

0 投票
1 回答
140 浏览

windows - Win 32 API:SHFileOperation 合并文件夹

我有 2 个文件夹:

我想将文件夹 2 与文件夹 1 合并,以便只有文件夹 1 存在。

我尝试使用 SHFileOperation

...但是将 m:\folder2 放入 m:\folder1\folder2。但这不是我想要的。

SHFileOperation 是做到这一点的有效方法吗?如果是,应该怎么做?

谢谢!

0 投票
1 回答
2003 浏览

delphi - Delphi XE5中的ShFileOperation

我在使用 SHFileOperation 复制和删除 *.mb 和 *.db 文件时遇到问题

CopyFiles 代码效果很好,复制所有文件并在需要时创建文件夹,但是当我调用 DeleteFiles 代码时发生了一些奇怪的事情,“bkp”文件夹中的所有文件都被删除,但文件夹没有。

当我尝试访问它说“访问被拒绝”的文件夹时,在我关闭我的应用程序后,文件夹被删除了。

这是我的程序:

0 投票
2 回答
698 浏览

delphi - 递归删除文件并跳过正在使用的文件?

我正在使用 Windows API 递归删除许多文件和文件夹。我在没有 UI 的情况下使用它并抑制错误。问题是,如果其中一个文件正在使用中,它会完全失败。我期待这种可能性,并希望这种情况继续下去,跳过任何此类情况。失败的一个文件实际上是调用此删除命令的同一个 EXE(无论如何都会在全部完成后将其删除。

这就是我现在正在做的事情:

我怎样才能让它跳过正在使用的文件的任何事件?我查看了文档,但找不到任何可以做到这一点的东西。

0 投票
1 回答
1382 浏览

shell - 从 IfileOperation.GetDisplayName 中的 IShellItem 获取文件名

我挂钩了在 windows 中监视/拦截文件复制的CopyItems方法。IFileOperation我的问题是如何从(CopyItems 的最后一个参数)中检索完整的文件名IShellItem

psiDestinationFolder一个方法调用GetDisplayName,只返回当前文件的文件夹名称开始复制!!但我想获得完整的文件名,不知道该怎么办!?还有其他方法可以帮助我获得全名吗?或者我必须使用另一个 API ....?

对不起,如果我的英语不好!