问题标签 [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.
winapi - 如何打破 MFC 中的 ReadDirectoryChangesW 函数?
在 MFC 中,我在主对话框中添加了一个按钮,并ReadDirectoryChangesW
在此按钮中添加了功能。如果单击该按钮,将监视指定的文件夹。问题是如果我单击按钮,对话框将无法工作,因为程序仍在运行中ReadDirectoryChangesW
。我希望能够在自由使用对话框的同时监控文档,有什么解决方案吗?(请参考代码)
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.macworld.com/article/3451363/why-you-might-see-a-new-data-disk-in-catalina.html
winapi - Windows 资源管理器以一种棘手的方式监视目录更改?
我有一个沙盒系统通过挂钩 Ntxxx 文件系统 API 来重定向文件修改。有趣的是,如果我在我的沙盒中的记事本->文件/打开对话框中移动文件,例如从桌面\a.txt 到桌面\b\a.txt,真实桌面上的 a.txt 文件就会消失,它按 F5 刷新真实桌面后返回。实际上桌面文件夹根本没有变化,因为所有更改都是定向的。我知道大多数应用程序使用像 ReadDirectoryChanges 这样的 API 来监视更改,但显然资源管理器正在做一些不同的事情。我试过像https://directorymonitor.com/这样的工具,他们没有观察到桌面上的任何变化。我猜 SHFileOperation 以某种方式在内部与资源管理器进行交互,但是谁知道细节以及如何防止此通知?用户看到一个文件实际上还在那里就消失了,这真的很奇怪。
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
事件。这似乎很危险。
我可以寻找什么来确定文件保存是否已完成?
windows - 了解 DirectoryWatcher
我一直在尝试使用和理解Microsoft Cloud Mirror示例中的DirectoryWatcher类。它用于监视对目录的更改。老实说,我不认为它报告了所有的变化。无论如何,我对代码的关键部分有疑问,如下:ReadDirectoryChangesW
在查看了另一个问题的答案之后,这是我对上面代码的不理解之处:ReadDirectoryChangesW
在先前的调用返回结果之前,代码是否可能会重新调用?还是这段代码确实正确?感谢您的任何意见。
是的,我似乎已经在我的测试中确认在while
调用周围应该有另一个循环GetOverlappedResultEx
,类似于其他答案中提供的示例代码。我认为通知正在正确触发。
那里不应该也有一个电话CancelIo
吗?或者由于某种原因这不是必需的?