问题标签 [readdirectorychangesw]

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 投票
1 回答
141 浏览

winapi - 如何打破 MFC 中的 ReadDirectoryChangesW 函数?

在 MFC 中,我在主对话框中添加了一个按钮,并ReadDirectoryChangesW在此按钮中添加了功能。如果单击该按钮,将监视指定的文件夹。问题是如果我单击按钮,对话框将无法工作,因为程序仍在运行中ReadDirectoryChangesW。我希望能够在自由使用对话框的同时监控文档,有什么解决方案吗?(请参考代码)

0 投票
1 回答
60 浏览

python - 如果运行 Catalina 但不在 Mojave 上,则更改安装目录

需要在我们的公司环境中的 Mac 上运行 appblocker 软件。目前,代码/appblocker 可以在 Mojave 上运行,但不能在 Catalina 上运行,因为它会产生双硬盘驱动器问题(下面的链接)。

希望这是一个简单的,但我不能让它工作。我需要一段 python 代码,如果用户在 MacOS Catalina 上,它会更改目录并运行 appblocker,如果在 Mojave 上,只需正常运行 appblocker。我已经链接了我在下面使用的所有资源,包括 Catalina 的双硬盘驱动器,以及我从哪里获得了 appblocker(我们供应商的建议。)

我使用的代码可以在 AppBlocker.py 下的 github 链接下找到

https://github.com/erikberglund/AppBlocker

https://www.launchd.info/

https://www.macworld.com/article/3451363/why-you-might-see-a-new-data-disk-in-catalina.html

0 投票
1 回答
126 浏览

winapi - Windows 资源管理器以一种棘手的方式监视目录更改?

我有一个沙盒系统通过挂钩 Ntxxx 文件系统 API 来重定向文件修改。有趣的是,如果我在我的沙盒中的记事本->文件/打开对话框中移动文件,例如从桌面\a.txt 到桌面\b\a.txt,真实桌面上的 a.txt 文件就会消失,它按 F5 刷新真实桌面后返回。实际上桌面文件夹根本没有变化,因为所有更改都是定向的。我知道大多数应用程序使用像 ReadDirectoryChanges 这样的 API 来监视更改,但显然资源管理器正在做一些不同的事情。我试过像https://directorymonitor.com/这样的工具,他们没有观察到桌面上的任何变化。我猜 SHFileOperation 以某种方式在内部与资源管理器进行交互,但是谁知道细节以及如何防止此通知?用户看到一个文件实际上还在那里就消失了,这真的很奇怪。

0 投票
1 回答
208 浏览

delphi - 如何检测文件夹更改何时完成?

我正在使用 Delphi 和ReadDirectoryChangesW(in a TThread) 来检测特定文件夹何时发生更改。这工作得很好。我需要知道更改何时完成,以便我可以安全地对文件执行某些操作。

这是场景:我已将打印机映射到特定的文件名和文件夹(文件:本地端口c:\MonitorMe\prinfil.dat)。该文件夹中的唯一文件将是该打印机文件。打印作业可以是单页,也可以是数百页——我必须等到“打印到文件”完成后才能触发进一步的操作。我正在监视FILE_NOTIFY_CHANGE_SIZE并且FILE_NOTIFY_CHANGE_LAST_WRITE- 所以我会定期收到文件仍在“正在打印到”的通知。

我正在寻找一种安全的方法来实际检测“打印”何时完成。我想我可以在表单中设置一个计时器,然后Synchronize(StillPrinting)在线程中调用。StillPrinting将停止并重新启动计时器,以便只有在大约 300 毫秒的 NO 文件夹更改之后,计时器才会执行 - 触发OnAfterPrintComplete事件。这似乎很危险。

我可以寻找什么来确定文件保存是否已完成?

0 投票
0 回答
80 浏览

windows - 了解 DirectoryWatcher

我一直在尝试使用和理解Microsoft Cloud Mirror示例中的DirectoryWatcher类。它用于监视对目录的更改。老实说,我不认为它报告了所有的变化。无论如何,我对代码的关键部分有疑问,如下:ReadDirectoryChangesW

在查看了另一个问题的答案之后,这是我对上面代码的不理解之处:ReadDirectoryChangesW在先前的调用返回结果之前,代码是否可能会重新调用?还是这段代码确实正确?感谢您的任何意见。

是的,我似乎已经在我的测试中确认在while调用周围应该有另一个循环GetOverlappedResultEx,类似于其他答案中提供的示例代码。我认为通知正在正确触发。

那里不应该也有一个电话CancelIo吗?或者由于某种原因这不是必需的?