问题标签 [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.
c++ - SHFileOperation的能力
SHFileOperation 是否支持同时移动和重命名文件?
我有一组文件:c:\ f1.bmp f2.bmp f3.bmp f4.bmp
我想将每个移动到新文件夹,并重命名它们:d:\ b1.bmp b2.bmp b3.bmp b4.bmp
我可以使用 SHFileOperation 吗?只做一次?非常感谢!
c++ - SHFileOperation FO_MOVE 在目标驱动器已满时删除文件
我有一段代码使用带有 FO_MOVE 操作的 windows SHFileOperation 函数。指定的其他标志是 FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_静音。
当目标驱动器已满时,观察到一种特别奇怪的行为。在这种情况下,MOVE 无法将文件放入目标文件夹,但源文件也丢失了。这是非常出乎意料的,这会导致数据丢失。
这是 SHFileOperation 的标准行为吗?如果目标驱动器有空间,我们可以有类似 MOVE 的东西,否则将文件留在原始位置?
delphi - 在网络共享上移动文件时的性能问题
我正在编写一个可以在网络共享上复制文件的应用程序。通常文件在同一个物理硬盘驱动器上移动。如果您使用 Windows 资源管理器对此进行测试,此操作将执行得非常快。看来,Windows 知道相同的位置并进行真正的移动,而不是复制和删除(这会更慢)。
假设您要复制一组文件:
目的地例如:
该应用程序使用 Windows Shell API(我在 Delphi 中编写了该应用程序,但其他语言的问题也应该相同):
不幸的是,此代码执行“复制和删除”,这在大文件或文件很多的情况下要慢得多。我怎样才能避免这种情况?有没有办法告诉移动操作,文件夹在同一个硬盘上?也许网络路径还有其他一些符号。
还是 Windows Explorer 使用了不同的 API 函数?
做一个简短的比较:
- 文件数:260
- 每个文件的文件大小:11 kB
- 进入资源管理器的时间:2 秒
- 使用 SHFILEOPERATION 移动的时间:20 秒
我在我的开发系统上使用 Windows 7,但它也应该在 XP 上工作,所以我不能使用新的 IFileOperation 界面。
亲切的问候
c++ - 双空终止字符串
为了使用 SHFileOperation,我需要将字符串格式化为双空终止字符串。
有趣的部分是我发现以下工作之一,但不是两者兼而有之:
有人对此有想法吗?
还有其他方法可以附加双终止字符串吗?
c++ - SHFileOperation 不会移动文件夹的所有内容
这会在桌面上创建一个新文件夹,但不会将文件夹 .pfrom 的内容移动到文件夹 .pTo。
winapi - 如果请求 FOF_NOERRORUI,则使用 SHFileOperation 复制目录结构失败
我有一个使用 SHFileOperation 将一个目录复制到另一个目录的工作代码。在这种情况下,这是 Pascal 代码,但我也一直在 C++ 中使用相同的函数,问题似乎与 Windows 核心有关,而不是特定的编程语言。
根据 MSDN,我想指定以下标志组合:
也就是说,我不需要进度条,我通过隐含的“是”答案来抑制有关文件和目录的所有可能问题,并且我不希望 GUI(对话框)中出现任何错误消息。
使用这种标志组合,函数返回错误 0x4C7(被用户取消,这是不正确的)。如果我删除 FOF_NOERRORUI 它可以在相同的输入参数和文件系统状态下正常工作。
不幸的是,我还需要抑制错误消息,并且需要 FOF_NOERRORUI 标志。
有人知道应该如何调整这种标志组合(可能是其他先决条件)以满足我的需求吗?
以下是那些可能认为存在一些错误的人的源代码:
delphi - 在工作线程中使用 SHFileOperation 是否安全?
我想拥有
- 一个后台线程,它将通过
SHFileOperation
函数复制文件,一次总是只有一个SHFileOperation
(但我希望它在线程中) - 我需要 UI 输出,所以我需要使用
FOF_SIMPLEPROGRESS
标志并将某些内容传递给Wnd
成员
我有两个问题
- 从 main 以外的线程调用
SHFileOperation
withFOF_SIMPLEPROGRESS
标志(用于用户交互)是否安全? - 如果是,我应该将什么句柄传递给
Wnd
成员?我试过主窗体的句柄,但是当例如覆盖确认对话框弹出并确认时,主窗体被发送到后台,这真的很奇怪
注意:我有这些操作的队列,所以SHFileOperation
当时只执行一个(完成后,线程继续执行另一个操作,下一个可能是什么SHFileOperation
)
非常感谢
file-io - 如何编写只转发文件操作的 Linux 驱动程序?
我需要实现一个 Linux 内核驱动程序,它(在第一步中)只将所有文件操作转发到另一个文件(在后面的步骤中,这应该被管理和操作,但我不想在这里讨论这个)。
我的想法如下,但是在阅读时,内核崩溃了:
那么,谁能告诉我为什么?
c++ - SHFileOperation 当 pFrom = "" 时删除
我有一个涉及 SHFileOperation 的问题:
我的期望是,由于 pathSubDir 是“”,它不会删除任何内容,并且我应该得到 n 不等于 0。但是,事实并非如此。我最终得到了 n = 0,这意味着操作已成功完成。我很好奇是否有人可以向我解释为什么我的假设是错误的。谢谢你。
file-management - SHFileOperation 替换文件对话框
目前,SHFileOperation 有一些确认文件替换对话框,询问用户是否要替换文件。我发现这些很有用,但我希望能够修改它们发生的场景。相反,我想先将文件内容与bool compareFile()
我编写的函数进行比较。然后,如果文件相同,则不会出现文件替换对话框。假设,我已经有一个工作compareFile()
功能,有没有办法让我做到这一点?感谢您的时间。